k*******0 发帖数: 8 | 1 上星期遇到这题, 不知道有什么最好的解法?
Public ArrayList findAllSet(int[] a, int target)
要求找出所有能加成target 的set, 数列里面的数字可以有重复但每个数字只能用一次
E.G. [4,4,5,5] ,9 return [[4,5],[4,5]]
[1,1,1,1,1],2 return [[1,1],[1,1]]
最后我用了HashMap, key 放数字, value 放count, 找pair的时候同时delete 2个数字
(4,5), 可是心里总觉得怪怪的, 有谁有比较好的答案吗 | A**u 发帖数: 2458 | 2 关注这个题目
4,4,5,5
为什么不返回
4,5 (0,2)
4,5 (0,3)
4,5 (1,2)
4,5 (1,3)
呢
【在 k*******0 的大作中提到】 : 上星期遇到这题, 不知道有什么最好的解法? : Public ArrayList findAllSet(int[] a, int target) : 要求找出所有能加成target 的set, 数列里面的数字可以有重复但每个数字只能用一次 : E.G. [4,4,5,5] ,9 return [[4,5],[4,5]] : [1,1,1,1,1],2 return [[1,1],[1,1]] : 最后我用了HashMap, key 放数字, value 放count, 找pair的时候同时delete 2个数字 : (4,5), 可是心里总觉得怪怪的, 有谁有比较好的答案吗
| k*******0 发帖数: 8 | 3 因为题目有要求每个数字都只能用一次,
像[4,4,5,5] 转成
[4,5] (0,2)
的时候, index 0上面的4 跟 index 2上面的5都不能再被用了
【在 A**u 的大作中提到】 : 关注这个题目 : 4,4,5,5 : 为什么不返回 : 4,5 (0,2) : 4,5 (0,3) : 4,5 (1,2) : 4,5 (1,3) : 呢
| i*******6 发帖数: 107 | 4 sort+2pointers
稍微改一下就是遇到A[i]+A[j] = target的时候,同时i++,j-- | A***o 发帖数: 358 | 5 这样行不行,用过就从数组删掉
【在 k*******0 的大作中提到】 : 上星期遇到这题, 不知道有什么最好的解法? : Public ArrayList findAllSet(int[] a, int target) : 要求找出所有能加成target 的set, 数列里面的数字可以有重复但每个数字只能用一次 : E.G. [4,4,5,5] ,9 return [[4,5],[4,5]] : [1,1,1,1,1],2 return [[1,1],[1,1]] : 最后我用了HashMap, key 放数字, value 放count, 找pair的时候同时delete 2个数字 : (4,5), 可是心里总觉得怪怪的, 有谁有比较好的答案吗
| l***i 发帖数: 1309 | | J*******o 发帖数: 741 | 7
我觉得这个方法好点
【在 i*******6 的大作中提到】 : sort+2pointers : 稍微改一下就是遇到A[i]+A[j] = target的时候,同时i++,j--
| P**l 发帖数: 3722 | 8 为啥找pair的时候delete 2个啊
【在 k*******0 的大作中提到】 : 上星期遇到这题, 不知道有什么最好的解法? : Public ArrayList findAllSet(int[] a, int target) : 要求找出所有能加成target 的set, 数列里面的数字可以有重复但每个数字只能用一次 : E.G. [4,4,5,5] ,9 return [[4,5],[4,5]] : [1,1,1,1,1],2 return [[1,1],[1,1]] : 最后我用了HashMap, key 放数字, value 放count, 找pair的时候同时delete 2个数字 : (4,5), 可是心里总觉得怪怪的, 有谁有比较好的答案吗
|
|