leetcode第75题sort colors问题

发布于 2022-09-05 09:49:29 字数 663 浏览 8 评论 0

public class Solution {

public void sortColors(int[] nums){
    int left = 0, right = nums.length-1;
    if(nums.length ==1)
        return ;
    for(int i = 0; i<nums.length && right>=0; ){
        if(nums[i]==0){
            swap(nums[i], nums[left]);
            i++;
            left++;
        }
        else if (nums[i]==2){
            swap(nums[i], nums[right--]);
        }
        else
            i++;
    }
}

public void swap(int a, int b){
    int temp = a;
    a = b;
    b = temp;
}

}
题目是数组有很多个0、1、2,要求排序,最后的数组应该是前面全是零,中间全是一,最后面是二。但是写程序时发现会出现很多问题,比如指针越界等等,以上这个程序在[1,0]时,输出不正确。但是我怎么也找不到问题所在。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

感性 2022-09-12 09:49:29

你的思路正确,但是你得swap方法实际并没有交换你数组中的两个值,JAVA的方法的值传递,传递的只是值或者引用的拷贝,swap方法的内的交换和nums数组没有任何关系。
这个概念比较重要,可以百度研究下

迷爱 2022-09-12 09:49:29

题意懂了,有其他要求吗?例如,只能在一个数组中完成,排序算法的要求?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文