zoukankan      html  css  js  c++  java
  • 442. Find All Duplicates in an Array

    Given an array of integers, 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and others appear once.

    Find all the elements that appear twice in this array.

    Could you do it without extra space and in O(n) runtime?

    Example:

    Input:
    [4,3,2,7,8,2,3,1]
    
    Output:
    [2,3]
    

    我的答案:

        public List<Integer> findDuplicates(int[] nums) {
            sort(nums);
            List<Integer> list = new ArrayList<>();
            for (int i = 1; i < nums.length; i++) {
    			if(nums[i] == nums[i-1]){
    				list.add(nums[i]);
    			}
    		}
            return list;
        }
    

    大神答案:

    	public static List<Integer> findDuplicates(int[] nums) {
    		List<Integer> res = new ArrayList<>();
            for (int i = 0; i < nums.length; ++i) {
                int index = Math.abs(nums[i])-1;
                if (nums[index] < 0)
                    res.add(Math.abs(index+1));
                nums[index] = -nums[index];
            }
            return res;
        }	
    
  • 相关阅读:
    TCL环境检查
    POI之Excel文档增删改查
    wireshark自动化之tshark命令行
    selenium-webdriver
    ruby自动化之selenium webGUI
    TCL自动化之SSH交互式
    链表的操作
    参考网址
    RTC定时开机闹钟
    中断
  • 原文地址:https://www.cnblogs.com/luozhiyun/p/8418844.html
Copyright © 2011-2022 走看看