第六天

30.(219) Contains Duplicate II

JAVA
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
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
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
//注意,这里的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
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
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
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
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
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
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;
}
}

LeetCode第六天的更多相关文章

  1. 我为什么要写LeetCode的博客?

    # 增强学习成果 有一个研究成果,在学习中传授他人知识和讨论是最高效的做法,而看书则是最低效的做法(具体研究成果没找到地址).我写LeetCode博客主要目的是增强学习成果.当然,我也想出名,然而不知 ...

  2. LeetCode All in One 题目讲解汇总(持续更新中...)

    终于将LeetCode的免费题刷完了,真是漫长的第一遍啊,估计很多题都忘的差不多了,这次开个题目汇总贴,并附上每道题目的解题连接,方便之后查阅吧~ 477 Total Hamming Distance ...

  3. [LeetCode] Longest Substring with At Least K Repeating Characters 至少有K个重复字符的最长子字符串

    Find the length of the longest substring T of a given string (consists of lowercase letters only) su ...

  4. Leetcode 笔记 113 - Path Sum II

    题目链接:Path Sum II | LeetCode OJ Given a binary tree and a sum, find all root-to-leaf paths where each ...

  5. Leetcode 笔记 112 - Path Sum

    题目链接:Path Sum | LeetCode OJ Given a binary tree and a sum, determine if the tree has a root-to-leaf ...

  6. Leetcode 笔记 110 - Balanced Binary Tree

    题目链接:Balanced Binary Tree | LeetCode OJ Given a binary tree, determine if it is height-balanced. For ...

  7. Leetcode 笔记 100 - Same Tree

    题目链接:Same Tree | LeetCode OJ Given two binary trees, write a function to check if they are equal or ...

  8. Leetcode 笔记 99 - Recover Binary Search Tree

    题目链接:Recover Binary Search Tree | LeetCode OJ Two elements of a binary search tree (BST) are swapped ...

  9. Leetcode 笔记 98 - Validate Binary Search Tree

    题目链接:Validate Binary Search Tree | LeetCode OJ Given a binary tree, determine if it is a valid binar ...

随机推荐

  1. 剑指offfer:二维数组中的查找

    题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成这样一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 例如: 1    2  ...

  2. Shell读取配置文件的方法

    参考:http://www.cnblogs.com/binbinjx/p/5680214.html 做批量软件安装自动化时,都喜欢用配置文件的方式改变参数,那怎么通过shell读取配置文件的配置呢?参 ...

  3. 04_Javascript初步第二天(下)

    错误对象 try{ aa();//这是一个未被定义的方法 }catch(e){ alert(e.name+":"+e.message);//输出:ReferenceError:aa ...

  4. phpmailer发送邮件服务

    获取开源的phpmail类 开启stmp服务登录126/163邮箱 ->设置->POPS/SMTP/IMAP(开启需要的服务,并点击保存,初次使用会要求设置一个授权码) 测试 <?p ...

  5. Redis进阶实践之十 Redis主从复制的集群模式

    一.引言        Redis的基本数据类型,高级特性,与Lua脚本的整合等相关知识点都学完了,说是学完了,只是完成了当前的学习计划,在以后的时间还需继续深入研究和学习.从今天开始来讲一下有关Re ...

  6. 《Thinking in Java》学习笔记(五)

    1. Java异常补充 a.使用try/catch捕获了异常之后,catch之后的代码是会正常运行的,认为即使进行了异常捕获,出现了异常就不往下执行,这是很多新手会犯的错误. public class ...

  7. BZOJ 3239: Discrete Logging [BGSG]

    裸题 求\(ind_{n,a}b\),也就是\(a^x \equiv b \pmod n\) 注意这里开根不能直接下取整 这个题少了一些特判也可以过... #include <iostream& ...

  8. BZOJ 3329: Xorequ [数位DP 矩阵乘法]

    3329: Xorequ 题意:\(\le n \le 10^18\)和\(\le 2^n\)中满足\(x\oplus 3x = 2x\)的解的个数,第二问模1e9+7 \(x\oplus 2x = ...

  9. POJ 2185 Milking Grid [KMP]

    Milking Grid Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 8226   Accepted: 3549 Desc ...

  10. FileBeat安装配置

    在ELK中因为logstash是在jvm上跑的,资源消耗比较大,对机器的要求比较高.而Filebeat是一个轻量级的logstash-forwarder,在服务器上安装后,Filebeat可以监控日志 ...