c++ - 模行为 C++
问题描述
我正在研究以下hackerrank问题:
我向左旋转以下向量(即值应向左移动d
时间):
1 2 3 4 5
在哪里d = 4
。
这是我的旋转代码:
using namespace std;
vector<int> rotLeft(vector<int> a, int d) {
vector<int> r(a.size());
for(int i = 0; i < a.size(); ++i){
if(a[i] == 1) // debug output
cout << (i-d) % r.size() << " ; " << (i-d) << " ; " << r.size() << " ; " << -4 % 5 << endl;
// actual code
r[((i-d) % r.size() + r.size()) % r.size()] = a[i];
}
return r;
}
代码返回5 0 1 2 3
而不是预期的5 1 2 3 4
.
我已将问题缩小到(i-d) % r.size()
. 出于某种原因,(i-d) % r.size()
是 2 而不是 -4(这是我所期望的)。调试输出为2 ; -4 ; 5 ; -4
,表示i-d
为 -4,r.size()
为 5,-4 % 5
应为 -4。为什么会这样?
解决方案
推荐阅读
- glsl - 如何在 gstreamer 的 glshader 元素上使用 vertex 属性?
- html - 问题在复选框中间居中文本
- flutter - 当我更改正在使用的工具时,我想避免重新创建 AppBar 和 Drawer
- fortran - 循环读取fortran中的多个文件
- c++ - 使用 MSVC2017x64 编译时 Qt 5.10.0 中的 SwipeView 崩溃
- php - 为什么媒体插入在不同的服务器上会产生不同的结果?
- python - 使用自定义 python 文件进行转换是否可以在 Spark 中使用?
- javascript - 在元素外部单击的代码未触发
- hyperledger-fabric - 我可以在 Hyperledger Fabric 中的组织内创建多个渠道吗?
- swift - 如果我设置父背景颜色,UIContainerView 不显示