2022年7月22日 第一组 周鹏 我的天啊!算法是什么玩意儿啊!!!!累死了!!!
直接看题吧,好累啊

这个题前面做着不难,后面如何判断不重复的三元组,是真的麻烦,由于现在还没学集合什么的,只能靠数组,二位又不会扩列,简直了!!!
int[]nums = {-1,0,1,2,-1,-4,4}; int a = 0; int c = 0; int b =0; int []d = new int[3]; if(nums.length<3){ System.out.println("[]"); }else { for (int i = 0; i < nums.length - 2; i++) { for (int j = 0; j < nums.length - 1; j++) { for (int l = 0; l < nums.length; l++) { if (nums[i] + nums[j] + nums[l] == 0) { //最大数 a = (nums[i] > nums[j] ? nums[i] : nums[j]) > nums[l] ? (nums[i] > nums[j] ? nums[i] : nums[j]) : nums[l]; //最小数 c = (nums[i] < nums[j] ? nums[i] : nums[j]) < nums[l] ? (nums[i] < nums[j] ? nums[i] : nums[j]) : nums[l]; //中间数 b = (a + c) * -1; int m = 0;//记录是否有相等的项 for (int n = 0; n < d.length; n = n + 3) {//判断是否有相等 if (c == d[n] && b == d[n + 1] && a == d[n + 2]) { m++; } } if (m == 0) { if (d[d.length - 1] != 0) {//判断是否需要扩容 int[] e = new int[d.length + 3]; for (int n = 0; n < d.length; n++) { e[n] = d[n]; } d = e; d[d.length - 1] = a; d[d.length - 2] = b; d[d.length - 3] = c; } else { d[d.length - 1] = a; d[d.length - 2] = b; d[d.length - 3] = c; } } } } } } for (int n = 0; n < d.length - 3; n = n + 3) { System.out.print("[" + d[n] + "," + d[n + 1] + "," + d[n + 2] + " " + "]" + ","); } }
我这个还有个bug,,就是当数组里面有三个0的时候,是输出不了的,如果有谁有更好的办法,请联系我
 
                    
                 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号