我有一个关于Hackerrank最小交换问题的问题。
基本上,问题是找到排序数组所需的交换数。
int minimumSwaps(vector<int> arr) {
int n = arr.size();
int count_swap = 0;
vector<int> temp;
for(int i = 0; i < n; ++i){
cout << temp.size()<<"\n";
if(arr[i] == i+1){
temp.push_back(arr[i]);
}
else{
int initial_val = arr[i];
int next_val = arr[arr[i] - 1];
temp.push_back(initial_val);
while(next_val != initial_val){
temp.push_back(next_val);
next_val = arr[next_val - 1];
count_swap += 1;
}
}
if (temp.size() == n){
break;
}
}
print(temp);
return count_swap;
}
2->3->4->1->2
所以有一个长度为4的循环。因此,所需的最小交换为4-1=3。(因为其他5个已经到位,并且循环长度为1,因此需要0个交换)。
该算法对向量中的每个元素进行迭代,然后继续确定该元素处的循环。因此,它四次遇到第一个周期。该算法可能会对向量中的循环进行迭代。
本文向大家介绍使用C语言实现最小生成树求解的简单方法,包括了使用C语言实现最小生成树求解的简单方法的使用技巧和注意事项,需要的朋友参考一下 最小生成树Prim算法朴素版 有几点需要说明一下。 1、2个for循环都是从2开始的,因为一般我们默认开始就把第一个节点加入生成树,因此之后不需要再次寻找它。 2、lowcost[i]记录的是以节点i为终点的最小边权值。初始化时因为默认把第一个节点加入生成树,
如何学习? 0)单元测试 1)最小化问题 2)带着疑问学习 3)反复区分状态,语境 4)培养成就感 想想本文是如何带你这样玩的?
本文向大家介绍解决Tomcat修改get提交请求乱码问题,包括了解决Tomcat修改get提交请求乱码问题的使用技巧和注意事项,需要的朋友参考一下 1:表单提交controller获得中文参数后乱码解决方案 注意: jsp页面编码设置为UTF-8 ***************form表单提交方式为必须为post,get方式下面spring编码过滤器不起效果 修改web.xml,增加编码过滤器,如
第一次: Hackerrank抛出错误,因为不是函数。我还尝试了和,但都无济于事。 我尝试了:
本文向大家介绍C++交换指针实例,包括了C++交换指针实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C++交换指针的方法。分享给大家供大家参考。具体分析如下: 通常情况下,我们只是对普通数据进行交换,交换指针的问题很少涉及,这里总结下,也方便我们以后查阅。 首先看下整型两个数据的交换(这个比较简单,就不多介绍了),核心代码如下: 指针是内存地址,应该也算是整型变量,交换两个指针和交换
我试图交换链表中节点的位置,然后使用排序函数进行排序。这两个函数中的任何一个都有逻辑错误。当我运行这个程序时,它会无限循环。 更新代码