第六天

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. java面向对象的三大特性——多态

    多态 所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底 ...

  2. Django 类方式view进行进行用户验证

    问题: Django中,view的书写方式有两种,一种是def函数方式,一种是class方式,函数方式通过@login_required装饰器标记函数,就必须通过用户验证,而类,则没办法通过此方法进行 ...

  3. python_语法糖_装饰器

    什么是高阶函数? -- 把函数名当做参数传给另外一个函数,在另外一个函数中通过参数调用执行 #!/usr/bin/python3 __author__ = 'beimenchuixue' __blog ...

  4. Linxu指令--crond

    前一天学习了 at 命令是针对仅运行一次的任务,循环运行的例行性计划任务,linux系统则是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因此这个 ...

  5. Git初入

    Git记录 使用git 也有一段时间了, git的入门级了解也就不再多说, 但平常使用中, 仍然会遇到很多问题, 在此记录一二. 在查资料的过程中, 发现了两个比较好的资料: 特别是第二个, 相当详细 ...

  6. Spring MVC CORS 跨域

    介绍 跨域CORS,全称是"跨域资源共享"(Cross-origin resource sharing) 当页面发出跨域请求时: 简单请求(先简单理解为正常的get/post吧): ...

  7. restful 风格的理解

    rest   其实就是representation    status   transfer(表现层状态转换) restful 风格的API具有如下特征: 1. 每个URI  包含一种资源,而且URI ...

  8. DirectX SDK (June 2010)安装错误S1023的一个解决方法

    在安装DXSDK_Jun10.exe时一个常见的安装失败的代号是S1023,一般出现这种错误的原因是系统中已经安装了Visual Studio 2010及以上的版本. 在[控制面板]中找到这两个: 如 ...

  9. hdu3507 Print Article

    Print Article Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others) P ...

  10. Spring的事务管理(理论篇,下篇提供代码实现)

    事务:逻辑上的一组操作,这组操作要么全部成功,要么全部失败(事务十大特性:原子性,一致性,隔离性,持久性) 原子性:事务是不可分割的工作单位,事务中的操作要么都发生了,要么都不发生.(也就是说不能单独 ...