287 Find the Duplicate Number

總結:

  1. 注意數組會否出界 e.g. num[-3]
class Solution {
    public int findDuplicate(int[] nums) {
        //time complexity less than O(n2) 表示要用指針
        //用nums[i] 表示index位置,  因為數值只會出現一次, loop的時侯遇到該數值則把nums[nums[i]]變為負數 e.g. 
        //如再次遇到該值並且該值為負數時, return 該值
        
        for(Integer num: nums){
            if (nums[Math.abs(num)]>0){  //Math.abs(num) 來防止數組出界 e.g. 當num=3時, 因為前面的1已經將3變成-3, 所以要將下標變為正數防止數組出界
                nums[Math.abs(num)]= -nums[Math.abs(num)];
            }
            else{
                return Math.abs(num);
            }
        }
    return 0;
}
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。