分享

Leetcode刷题 2021.01.24

 印度阿三17 2021-01-25

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./content-4-833401.html

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多