java - leetcode第75题sort colors问题
本文介绍了java - leetcode第75题sort colors问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
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]时,输出不正确。但是我怎么也找不到问题所在。
解决方案
你的思路正确,但是你得swap方法实际并没有交换你数组中的两个值,JAVA的方法的值传递,传递的只是值或者引用的拷贝,swap方法的内的交换和nums数组没有任何关系。
这个概念比较重要,可以百度研究下
这篇关于java - leetcode第75题sort colors问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文