zoukankan      html  css  js  c++  java
  • Contains DuplicateII

    超时版:

    /*Contains Duplicate II 
    Given an array of integers and an integer k, find out whether there there are two distinct indices i and j in the array such that nums[i] = nums[j] and the difference between i and j is at most k.
    */
    
    
    
    
    
    
    
    public class Leetcode2 {
    
        public static void main(String[] args) {
            int arr[]= {1,2,34,43,1};
            System.out.println(containsNearbyDuplicate(arr,1));
            
            // TODO Auto-generated method stub
    
        }
    
    
            public static boolean containsNearbyDuplicate(int[] nums, int k) {
               
                    for (int i = 0; i < nums.length - 1; i++) {
                        int temp = k + i;
                        int y = ((temp > nums.length - 1) ? nums.length : temp+1);
                        for (int j = 1; j < y; j++) {
                            int x = ((i+j )> nums.length - 1) ? nums.length-1 : (i+j);
                            if((nums[x] - nums[i])==0)
                                return true;
                        }
                    }
                    return false;
                }
                
    
        /* public static boolean containsNearbyDuplicate(int[] nums, int k) {
        
             int x;
             for (int i = 0; i < nums.length - 1; i++) {
            int temp = k + i;
            
         while(temp<=nums.length-1)
         {   int temp2=temp;
         for(int j=i+1;j<temp2;j++) {
             x=nums[j]-nums[i];
             if(x==0)
                 return true;
         }
         }
            
            
        }
                 return false;
         }
    */
    
    }

     AC版:注意集合框架的使用!!

    public class Solution {
        public boolean containsNearbyDuplicate(int[] nums, int k) {
           
    		Map<Integer,Integer> tm=new TreeMap<Integer,Integer>();
    			
    			{ 
    				for (int i = 0; i < nums.length ; i++) 
    				{
    			
    				if(tm.containsKey(nums[i]))
    				  {
    					int j=tm.get(nums[i]);
    					if((i-j)<=k)
    				 	return true;									
    				  }
    				tm.put(nums[i],i);
    			    }
    				return false;
    			}	
    		
    }
    }
    

      

  • 相关阅读:
    字符串,列表和元组-3
    数据和表达式-2
    python3.6.2(32位)的安装-1
    HTTP协议
    bug无法重现
    当开发说不是BUG时怎么办
    Python流程分类初试
    私有,封装
    Python继承
    编译型语言和解释型语言
  • 原文地址:https://www.cnblogs.com/kydnn/p/4545891.html
Copyright © 2011-2022 走看看