本文共 1183 字,大约阅读时间需要 3 分钟。
思路:
这个题累了我半天。思路就是先排序。然后就简单了错误:
在比较最后一个数组的时候我没有考虑循环退出的时候,最后一个符合要求的字符是没有判断是否要加入到结果里面的 也就是忘记了代码if(cnt>n/3) { result.add(tempInt); }
要在循环结束之后再判断一次,用来考虑最后一个结果。以后要注意
代码
public class Solution { public ListmajorityElement(int[] nums) { List result=new ArrayList (); int n=nums.length; switch (n) { case 0: break; case 1: result.add(nums[0]); break; case 2: if(nums[0]!=nums[1]) { result.add(nums[0]); result.add(nums[1]); } else { result.add(nums[0]); } break; default: Arrays.sort(nums); int cnt=1; int tempInt=nums[0]; for(int i=1;i n/3) { result.add(tempInt); } cnt=1; tempInt=nums[i]; } } if(cnt>n/3) { result.add(tempInt); } break; } return result; }}
转载地址:http://xbuvb.baihongyu.com/