美文网首页
2022-03-08 「75. 颜色分类」

2022-03-08 「75. 颜色分类」

作者: 柠香萌萌鸡 | 来源:发表于2022-03-07 10:22 被阅读0次

今日是中等题:https://leetcode-cn.com/problems/sort-colors/
题目倒是不难,就是实现一个快排,思路也很清晰,双指针头尾往中间走,new了一个新的数组对象来存放排序后的结果。
但最后提交的时候傻眼了,题目的方法类型是void,也就是说没有返回值,我开始自作聪明把void改成了int[]也并没有什么卵用。

调试的时候发现一切正常,猜测可能题目本身想要的就是我在nums内部做排序,可是这样要做交换了,我不喜欢交换。
所以自作聪明二连,我直接把排序后的数组ans赋值给nums就好了吧?
于是操作了一波:

nums =  ans;

再次运行果然又打脸了。

在请教了开发小哥哥之后,终于意识到了,我这是栽在了入门坑里,上述的方法是引用而非赋值,并没有实际改变nums对象,所以返回的依旧是毫发无伤的nums本人没错。
关于Java对象的引用与赋值,可参考这篇:https://www.cnblogs.com/liuurick/p/10713656.html

于是在和开发大大讨论之后,我发现可以改用这样的方式做赋值:

for (int k =0 ;k<len;k++) {
            nums[k]=ans[k];
        }

虽然最终用了3次for循环,但是还是倔强地没有用答案的交换法,这里贴一下并不优雅的代码吧:

class Solution {
    public void sortColors(int[] nums) {
        int len = nums.length;
        int head = 0;
        int tail = len-1;
        int[] ans = new int[len];
        for (int i=0;i<len;i++) {
            if (nums[i]==0) {
                ans[head] = 0;
                head++;
            }
            else if (nums[i]==2) {
                ans[tail] = 2;
                tail--;
            }
        }
        for (int j=head; j<tail+1; j++) {
            ans[j] = 1;
        }
        for (int k =0 ;k<len;k++) {
            nums[k]=ans[k];
        }
    }
}

相关文章

  • 2022-03-08 「75. 颜色分类」

    今日是中等题:https://leetcode-cn.com/problems/sort-colors/[http...

  • 75.颜色分类

    题目给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、...

  • 75. 颜色分类

    题目描述 给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照...

  • 75. 颜色分类

    【题目描述】 【示例】 【进阶】 代码实现【解1】 看看就行啦 ? 【解2】思路:1、使用三个指针来标识数组左边、...

  • 75. 颜色分类

    题目描述 给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照...

  • 75.颜色分类

    原题 https://leetcode-cn.com/problems/sort-colors/ 解题思路 荷兰国...

  • 75.颜色分类

    题目描述 给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照...

  • 75. 颜色分类

    【Description】给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的...

  • 75. 颜色分类

    我觉得这道题的解法应该属于双指针吧,我大概记录一下我理解的思路,就是一个指针zero指向-1,一个two指向数组的...

  • 75. 颜色分类

    75. 颜色分类 问题 给定一个包含红色、白色和蓝色,一共 个元素的数组,原地对它们进行排序,使得相同颜色的元素...

网友评论

      本文标题:2022-03-08 「75. 颜色分类」

      本文链接:https://www.haomeiwen.com/subject/zkqarrtx.html