消失的两个数字
package cn.tiger.funny; import java.util.Arrays; /** * 消失的两个数字 * @author jyuan * 给定一个数组,包含从 1 到 N 所有的整数,但其中缺了两个数字。你能在 O(N) 时间内只用 O(1) 的空间找到它们吗? 以任意顺序返回这两个数字均可。 示例 1: 输入: [1] 输出: [2,3] 示例 2: 输入: [2,3] 输出: [1,4] 提示: nums.length <= 30000 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/missing-two-lcci 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 */ public class MissingTwo { public int[] missingTwo(int[] nums) { int[] result = new int[2]; int length = nums.length + 2; Arrays.sort(nums); int index = 0; int result_index = 0 ; for (int i = 1; i <= length; i++) { if(index < nums.length && nums[index] == i) { index ++; } else { result[result_index] = i; if(++result_index == 2) { break; } } } return result; } public static void main(String[] args) { MissingTwo a = new MissingTwo(); int[] aaa = new int[2]; aaa[0] = 3; aaa[1] = 2; System.out.println(a.missingTwo(aaa)[0]+ " "+a.missingTwo(aaa)[1]); } }

这属于蛮干的解法,另外补充一个哈希表的解题思路:

浙公网安备 33010602011771号