前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode第六天

LeetCode第六天

作者头像
郭耀华
发布2018-05-09 15:20:18
4560
发布2018-05-09 15:20:18
举报
文章被收录于专栏:郭耀华‘s Blog郭耀华‘s Blog

第六天

30.(219) Contains Duplicate II
JAVA
代码语言:javascript
复制
class Solution {
    public boolean containsNearbyDuplicate(int[] nums, int k) {
        Map<Integer,Integer> map = new HashMap<Integer,Integer>();
        for(int i =0;i<nums.length;i++){
            if(map.containsKey(nums[i]))
                if(i-map.get(nums[i])<=k)
                    return true;
                else
                    map.put(nums[i],i);
            else
                map.put(nums[i],i);
        }
        return false;
    }
}
31.(747) Largest Number At Least Twice of Others
JAVA
代码语言:javascript
复制
class Solution {
    public int dominantIndex(int[] nums) {
        int maxIndex = 0;
        for(int i =0;i<nums.length;i++){
            if(nums[i]>nums[maxIndex])
                maxIndex = i;
        }
        
        for(int i = 0 ;i<nums.length;i++){
            if(i!=maxIndex&&nums[maxIndex]<nums[i]*2)
                return -1;
        }
        return maxIndex;
    }
}
32.(665) Non-decreasing Array

==有点难度==

JAVA
代码语言:javascript
复制
class Solution {
    public boolean checkPossibility(int[] nums) {
        boolean isFirst = true;
        for(int i = 0 ;i < nums.length-1;i++){
            if(nums[i+1] < nums[i]){
                if(isFirst){
                    if(i == 0){//首位置为较小值
                        nums[i] = nums[i+1];
                    }else if(i == nums.length -2){//末尾置为大值
                        nums[i+1] = nums[i];
                    }else{//中间位置通过二者左右两边数的值,判断把哪位置为何值。
                        if(nums[i]<nums[i+2]){
                            nums[i+1] = nums[i];
                        }else if(nums[i+1]>nums[i-1]){
                            nums[i] = nums[i+1];
                        }else{
                            return false;
                        }
                    }
                    isFirst = false;
                }else{
                    return false;
                }
        }
        }
        return true;
    }
}
33.(532) K-diff Pairs in an Array
JAVA
代码语言:javascript
复制
//注意,这里的Map中存放的是 (num,num+k)or(num,null)
//之后计算Map中value有多少个非Null即可;
class Solution {
    public int findPairs(int[] nums, int k) {
        int pairs = 0;
        Map<Integer,Integer> map = new HashMap<Integer,Integer>();
        if(nums==null||nums.length == 0||k<0) return 0;
        for (int i = 0 ;i<nums.length;i++){
            if(map.containsKey(nums[i]-k))
                map.put(nums[i]-k,nums[i]);
            if(map.containsKey(nums[i]+k))
                map.put(nums[i],nums[i]+k);
            if(!map.containsKey(nums[i]))
                map.put(nums[i],null);
        }
        
        for(Integer key : map.keySet()) {
             if(map.get(key)!=null)
                 pairs++;
        }
        return pairs;
    }
}
34.(189) Rotate Array
JAVA
代码语言:javascript
复制
class Solution {
    public void rotate(int[] nums, int k) {
        k %=nums.length;
        reverse(nums,0,nums.length-1);
        reverse(nums,0,k-1);
        reverse(nums,k,nums.length-1);
    }
    public void reverse(int[] nums,int start,int end){
        while(start<end){
            int temp = nums[start];
            nums[start] = nums[end];
            nums[end] = temp;
            start++;
            end--;
        }
    }
}
35.(169) Majority Element
JAVA
代码语言:javascript
复制
class Solution {
    public int majorityElement(int[] nums) {
        int count = 0;
        Integer candidate = null;
        for(int num :nums){
            if(count == 0)
                candidate = num;
            count += (num == candidate)?1:-1;
            
        }
        return candidate;
    }
}
36.(167) Two Sum II - Input array is sorted
JAVA
代码语言:javascript
复制
class Solution {
    public int[] twoSum(int[] numbers, int target) {
        int start = 0;
        int end = numbers.length-1;
        while(start<end && numbers[start]+numbers[end] != target){
            if(numbers[start]+numbers[end]>target)
                end--;
            else
                start++;
        }
        return new int[] {start+1,end+1};
    }
}
37.(661) Image Smoother
JAVA
代码语言:javascript
复制
class Solution {
    public int[][] imageSmoother(int[][] M) {
        int R = M.length,C = M[0].length;
        int[][] result = new int[R][C];
        for(int r = 0 ;r<R;r++)
            for(int c = 0;c<C;c++){
                int count = 0;
                result[r][c] = 0;
                for(int nr=r-1;nr <= r+1;nr++)
                    for(int nc = c-1;nc <= c+1;nc++)
                        if(nr>=0&&nr<R&&nc>=0&&nc<C){
                            count++;
                            result[r][c] +=M[nr][nc];
                        }
                result[r][c] /= count;
            }
        return result;
    }
}
38.(53) ==Maximum Subarray==
==动态优化问题!重点,跟上楼梯那道题类似==
==解题思路==
JAVA
代码语言:javascript
复制
class Solution {
    public int maxSubArray(int[] nums) {
        int n = nums.length;
        int[] DP = new int[n];
        DP[0] = nums[0];
        int maxSum = DP[0];
        for(int i = 1;i<nums.length;i++){
            DP[i] = nums[i]+(DP[i-1]>0?DP[i-1]:0);
            maxSum = Math.max(maxSum,DP[i]);
        }
        return maxSum;
    }
}
39.(697) Degree of an Array
JAVA
代码语言:javascript
复制
class Solution {
    public int findShortestSubArray(int[] nums) {
        Map<Integer,Integer> left = new HashMap(),right = new HashMap(),count = new HashMap();
        for(int i = 0;i<nums.length;i++){
            if(left.get(nums[i]) == null) left.put(nums[i],i);
            right.put(nums[i],i);
            count.put(nums[i],count.getOrDefault(nums[i],0)+1);
        }
        int degree = Collections.max(count.values());//找出count中value的最大值
        int minLength = nums.length;
        for(int key : count.keySet()){
            if(count.get(key)==degree){
                minLength = Math.min(minLength,right.get(key)-left.get(key)+1);
            }
        }
        return minLength;
    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-01-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第六天
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档