Leetcode刷题 2021.01.24

Leetcode674 最长连续递增序列

给定一个未经排序的整数数组,找到最长且 连续递增的子序列,并返回该序列的长度。

连续递增的子序列 可以由两个下标 l 和 r(l < r)确定,如果对于每个 l <= i < r,都有 nums[i] < nums[i 1] ,那么子序列 [nums[l], nums[l 1], …, nums[r - 1], nums[r]] 就是连续递增子序列。

今天的每日一题,加了连续的最长递增序列,变得简单不少。因为是连续,所以不需要用dp记录之前的状态了,直接双指针滑动窗口即可。

class Solution {public int findLengthOfLCIS(int[] nums) {if (nums.length == 0) return 0;        int n = nums.length;        int i = 0, j = 1, res = 1;        while (j < n){//双指针,如果j大于j之前的数,就加1            while(j < n && nums[j] > nums[j - 1]){j  ;            }            //更新最大值            if (j - i > res){res = j - i;            }            //更新i的位置            i = j;            //j设置比i大1            j  ;        }        return res;    }}

Leetcode419 甲板上的战舰

给定一个二维的甲板, 请计算其中有多少艘战舰。 战舰用 'X’表示,空位用 '.'表示。 你需要遵守以下规则:

给你一个有效的甲板,仅由战舰或者空位组成。
战舰只能水平或者垂直放置。换句话说,战舰只能由 1xN (1 行, N 列)组成,或者 Nx1 (N 行, 1 列)组成,其中N可以是任意大小。

两艘战舰之间至少有一个水平或垂直的空位分隔 - 即没有相邻的战舰。

力扣有些题的翻译真的是一言难尽,看了好半天和评论的解释才明白。这题因为战舰之间一定有间隔,而且战舰一定是长方形的。所以只要战舰的头部的左上方没有其他战舰就是一艘了。

class Solution {public int countBattleships(char[][] board) {int m = board.length, n = board[0].length;        int res = 0;        for(int i = 0; i < m; i  ){for(int j = 0; j < n; j  ){//如果战舰的左上方没有其他战舰,就是一艘战舰                if (board[i][j] == 'X' && (i == 0 || board[i - 1][j] == '.') && (j == 0 || board[i][j - 1] == '.')){res  ;                }            }        }        return res;            }}

Leetcode1014 最佳观光组合

给定正整数数组 A,A[i] 表示第 i 个观光景点的评分,并且两个景点 i 和 j 之间的距离为 j - i。

一对景点(i < j)组成的观光组合的得分为(A[i] A[j] i - j):景点的评分之和减去它们两者之间的距离。

返回一对观光景点能取得的最高分。

这题也没想用dp之类的做,想法比较简单。遍历数组的时候记录一下当前可以提供的最大值就好了,这里最大值不单单是元素大小,还要记录元素下标的大小,元素下标对于整体大小是有负作用的,所有记录的时候记录下标即可。代码就比较简单了。

class Solution {public int maxScoreSightseeingPair(int[] A) {int max = 0, res = 0;        for(int i = 1; i < A.length; i  ){//记录全局“最大”值的下标,这里最大值和元素大小以及元素下标有关            res = Math.max(res, A[max]   A[i]   max - i);            //更新当前最大            if (A[max]   max - i < A[i]){max = i;            }        }        return res;    }}

来源:https://www.icode9.com/content-4-833401.html

(0)

相关推荐

  • ​LeetCode刷题实战53:最大子序和

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  • ​LeetCode刷题实战312:戳气球

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  • ​LeetCode刷题实战303:区域和检索 - 数组不可变

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  • ​LeetCode刷题实战152:乘积最大子数组

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  • ​LeetCode刷题实战410:分割数组的最大值

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  • ​LeetCode刷题实战334:递增的三元子序列

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  • ​LeetCode刷题实战283:移动零

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  • ​LeetCode刷题实战384:打乱数组

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  • ​LeetCode刷题实战41:缺失的第一个正数

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  • ​LeetCode刷题实战215:数组中的第K个最大元素

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  • ​LeetCode刷题实战416:分割等和子集

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...