Keshawn_lu's Blog

Keshawn_lu's Blog

Become a better myself.

Leetcode 5477. 排布二进制网格的最少交换次数
题目简介:给你一个 n x n 的二进制网格 grid,每一次操作中,你可以选择网格的 相邻两行 进行交换。 一个符合要求的网格需要满足主对角线以上的格子全部都是 0 。 请你返回使网格满足要求的最少操作次数,如果无法使网格符合要求,请你返回 -1 。 主对角线指的是从 (1, 1) 到 (n, n) 的这些格子。 示例 1: 12输入:grid = [[0,0,1],[1,1,0],[1,0,0]]输出:3 示例 2: 123输入:grid = [[0,1,1,0],[0,1,1,0],[0,1,1,0],[0,1,1,0]]输出:-1解释:所有行都是一样的,交换相邻行无法使网格符合要...
Leetcode 5476. 找出数组游戏的赢家
题目简介:给你一个由 不同 整数组成的整数数组 arr 和一个整数 k 。 每回合游戏都在数组的前两个元素(即 arr[0] 和 arr[1] )之间进行。比较 arr[0] 与 arr[1] 的大小,较大的整数将会取得这一回合的胜利并保留在位置 0 ,较小的整数移至数组的末尾。当一个整数赢得 k 个连续回合时,游戏结束,该整数就是比赛的 赢家 。 返回赢得比赛的整数。 题目数据 保证 游戏存在赢家。 示例 1: 12345输入:arr = [2,1,3,5,4,6,7], k = 2输出:5解释:一起看一下本场游戏每回合的情况:因此将进行 4 回合比赛,其中 5 是赢家,因为它连胜 2...
Leetcode 632. 最小区间
题目简介:你有 k 个升序排列的整数数组。找到一个最小区间,使得 k 个列表中的每个列表至少有一个数包含在其中。 我们定义如果 b-a < d-c 或者在 b-a == d-c 时 a < c,则区间 [a,b] 比 [c,d] 小。 示例 1: 123456输入:[[4,10,15,24,26], [0,9,12,20], [5,18,22,30]]输出: [20,24]解释: 列表 1:[4, 10, 15, 24, 26],24 在区间 [20,24] 中。列表 2:[0, 9, 12, 20],20 在区间 [20,24] 中。列表 3:[5, 18, 22, 30]...
Leetcode 面试题 08.03. 魔术索引
题目简介:魔术索引。 在数组A[0...n-1]中,有所谓的魔术索引,满足条件A[i] = i。给定一个有序整数数组,编写一种方法找出魔术索引,若有的话,在数组A中找出一个魔术索引,如果没有,则返回-1。若有多个魔术索引,返回索引值最小的一个。 示例1: 123输入:nums = [0, 2, 3, 4, 5]输出:0说明: 0下标的元素为0 示例2: 12输入:nums = [1, 1, 1]输出:1 说明: nums长度在[1, 1000000]之间 此题为原书中的 Follow-up,即数组中可能包含重复元素的版本 思路:首先最简单的就是循环遍历一次数组即可。 为了优化,我们可...
Leetcode 343. 整数拆分
题目简介:给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。 示例 1: 123输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1。 示例 2: 123输入: 10输出: 36解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。 说明: 你可以假设 n 不小于 2 且不大于 58。 思路:动态规划,dp[i]代表正整数i,拆分为至少两个正整数的和,并使这些整数的乘积最大化,可以获得的最大乘积。 所以对于一个正整数i >= 2,乘积的最大值存在以下两种情况: 将i分为j, i - j,并且i ...
Leetcode 2. 两数相加
题目简介:给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例: 123输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807 思路:一开始想着先把两个链表都不为空的情况解决,再把cur连接到剩下的非空的链表,然后就被各种情况烦死了。 所以第一个while()条件直接...
Leetcode 104. 二叉树的最大深度
题目简介:给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例:给定二叉树 [3,9,20,null,null,15,7], 12345 3 / \9 20 / \ 15 7 返回它的最大深度 3 。 思路:深度优先搜索,一个节点的最大深度为左右子树深度的较大值 + 1。 时间复杂度O(n)。 代码如下:1234567891011121314151617181920212223/** * Definition for a binary tree node. * struct TreeNode ...
Leetcode 392. 判断子序列
题目简介:给定字符串 s 和 t ,判断 s 是否为 t 的子序列。 你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=100)。 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。 示例 1:s = "abc", t = "ahbgdc" 返回 true. 示例 2:s = "...
Leetcode 329. 矩阵中的最长递增路径
题目简介:给定一个整数矩阵,找出最长递增路径的长度。 对于每个单元格,你可以往上,下,左,右四个方向移动。 你不能在对角线方向上移动或移动到边界外(即不允许环绕)。 示例 1: 12345678输入: nums = [ [9,9,4], [6,6,8], [2,1,1]] 输出: 4 解释: 最长递增路径为 [1, 2, 6, 9]。 示例 2: 12345678输入: nums = [ [3,4,5], [3,2,6], [2,2,1]] 输出: 4 解释: 最长递增路径是 [3, 4, 5, 6]。注意不允许在对角线方向上移动。 思路:首先将这个矩阵看做有向图,有向边为数...
Leetcode 5473. 灯泡开关 IV
题目简介:房间中有 n 个灯泡,编号从 0 到 n-1 ,自左向右排成一行。最开始的时候,所有的灯泡都是 关 着的。 请你设法使得灯泡的开关状态和 target 描述的状态一致,其中 target[i] 等于 1 第 i 个灯泡是开着的,等于 0 意味着第 i 个灯是关着的。 有一个开关可以用于翻转灯泡的状态,翻转操作定义如下: 选择当前配置下的任意一个灯泡(下标为 i ) 翻转下标从 i 到 n-1 的每个灯泡 翻转时,如果灯泡的状态为 0 就变为 1,为 1 就变为 0 。 返回达成 target 描述的状态所需的 最少 翻转次数。 示例 1: 1234567输入:target ...
avatar
鸣蜩十九
Always
友链
CSDN BiliBili