每日算法
Yi-27
小白一个...
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
每日算法35_2020-12-20
来源:题库 - 力扣 (LeetCode) (leetcode-cn.com)。侵删。 题目一 316. 去除重复字母 给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置)。 示例 1: 输入:s = “bcabc” 输出:“abc” 示例 2: 输入:s = “cbacdcbc” 输出:“acdb” 提示: 1 <= s.length <= 104 s 由小写英文字母组成 没做出来 官方答案:贪心+单调栈 .原创 2020-12-20 22:58:46 · 276 阅读 · 0 评论 -
每日算法33_2020-12-09
来源:题库 - 力扣 (LeetCode) (leetcode-cn.com)。侵删。 题目一 62. 不同路径 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。 问总共有多少条不同的路径? 示例 1: 输入: m = 3, n = 2 输出: 3 解释: 从左上角开始,总共有 3 条路径可以到达右下角。 向右 -> 向右 -> 向下 向右 ->.原创 2020-12-09 09:27:55 · 356 阅读 · 0 评论 -
每日算法32_2020-12-08
来源:题库 - 力扣 (LeetCode) (leetcode-cn.com)。侵删。 题目一 842. 将数组拆分成斐波那契序列 给定一个数字字符串 S,比如 S = “123456579”,我们可以将它分成斐波那契式的序列 [123, 456, 579]。 形式上,斐波那契式序列是一个非负整数列表 F,且满足: 0 <= F[i] <= 2^31 - 1,(也就是说,每个整数都符合 32 位有符号整数类型); F.length >= 3; 对于所有的0 <= i < F.原创 2020-12-08 10:20:18 · 246 阅读 · 0 评论 -
每日算法31_2020-12-07
来源:题库 - 力扣 (LeetCode) (leetcode-cn.com)。侵删。 题目一 861. 翻转矩阵后的得分 有一个二维矩阵 A 其中每个元素的值为 0 或 1 。 移动是指选择任一行或列,并转换该行或列中的每一个值:将所有 0 都更改为 1,将所有 1 都更改为 0。 在做出任意次数的移动后,将该矩阵的每一行都按照二进制数来解释,矩阵的得分就是这些数字的总和。 返回尽可能高的分数。 示例: 输入:[[0,0,1,1],[1,0,1,0],[1,1,0,0]] 输出:39 解释: 转换为 .原创 2020-12-07 10:42:11 · 184 阅读 · 0 评论 -
每日算法30_2020-12-06
来源:题库 - 力扣 (LeetCode) (leetcode-cn.com)。侵删。 题目一 5618. K 和数对的最大数目 给你一个整数数组 nums 和一个整数 k 。 每一步操作中,你需要从数组中选出和为 k 的两个整数,并将它们移出数组。 返回你可以对数组执行的最大操作数。 示例 1: 输入:nums = [1,2,3,4], k = 5 输出:2 解释:开始时 nums = [1,2,3,4]: 移出 1 和 4 ,之后 nums = [2,3] 移出 2 和 3 ,之后 nums = .原创 2020-12-07 10:41:29 · 208 阅读 · 0 评论 -
每日算法28_2020-12-04
来源:题库 - 力扣 (LeetCode) (leetcode-cn.com)。侵删。 题目一 659. 分割数组为连续子序列 给你一个按升序排序的整数数组 num(可能包含重复数字),请你将它们分割成一个或多个子序列,其中每个子序列都由连续整数组成且长度至少为 3 。 如果可以完成上述分割,则返回 true ;否则,返回 false 。 示例 1: 输入: [1,2,3,3,4,5] 输出: True 解释: 你可以分割出这样两个连续子序列 : 1, 2, 3 3, 4, 5 示例 2: 输入: [1.原创 2020-12-04 10:36:43 · 237 阅读 · 0 评论 -
每日算法27_2020-12-03
来源:题库 - 力扣 (LeetCode) (leetcode-cn.com)。侵删。 题目一 204. 计数质数 统计所有小于非负整数 n 的质数的数量。 示例 1: 输入:n = 10 输出:4 解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。 示例 2: 输入:n = 0 输出:0 示例 3: 输入:n = 1 输出:0 提示: 0 <= n <= 5 * 106 我的答案暴力枚举 class Solution { public int countPr.原创 2020-12-03 19:25:40 · 144 阅读 · 0 评论 -
每日算法26_2020-12-02
来源:题库 - 力扣 (LeetCode) (leetcode-cn.com)。侵删。 题目一 321. 拼接最大数 给定长度分别为 m 和 n 的两个数组,其元素由 0-9 构成,表示两个自然数各位上的数字。现在从这两个数组中选出 k (k <= m + n) 个数字拼接成一个新的数,要求从同一个数组中取出的数字保持其在原数组中的相对顺序。 求满足该条件的最大数。结果返回一个表示该最大数的长度为 k 的数组。 说明: 请尽可能地优化你算法的时间和空间复杂度。 示例 1: 输入: nums1 = .原创 2020-12-02 14:52:24 · 241 阅读 · 0 评论 -
每日算法25_2020-12-01
来源:题库 - 力扣 (LeetCode) (leetcode-cn.com)。侵删。 题目一 34. 在排序数组中查找元素的第一个和最后一个位置 给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target,返回 [-1, -1]。 进阶: 你可以设计并实现时间复杂度为 O(log n) 的算法解决此问题吗? 示例 1: 输入:nums = [5,7,7,8,8,10], target = 8 输出:[3,4].原创 2020-12-01 14:24:58 · 141 阅读 · 0 评论 -
每日算法24_2020-11-30
来源:题库 - 力扣 (LeetCode) (leetcode-cn.com)。侵删。 题目一 767. 重构字符串 给定一个字符串S,检查是否能重新排布其中的字母,使得两相邻的字符不同。 若可行,输出任意可行的结果。若不可行,返回空字符串。 示例 1: 输入: S = “aab” 输出: “aba” 示例 2: 输入: S = “aaab” 输出: “” 注意: S 只包含小写字母并且长度在[1, 500]区间内。 我没做出来 没悟到maxCharCounts > (length + 1) / .原创 2020-11-30 15:39:07 · 170 阅读 · 0 评论 -
每日算法23_2020-11-29
来源:题库 - 力扣 (LeetCode) (leetcode-cn.com)。侵删。 题目一 976. 三角形的最大周长 给定由一些正数(代表长度)组成的数组 A,返回由其中三个长度组成的、面积不为零的三角形的最大周长。 如果不能形成任何面积不为零的三角形,返回 0。 示例 1: 输入:[2,1,2] 输出:5 示例 2: 输入:[1,2,1] 输出:0 示例 3: 输入:[3,2,3,4] 输出:10 示例 4: 输入:[3,6,2,3] 输出:8 提示: 3 <= A.length <.原创 2020-11-29 13:04:03 · 198 阅读 · 0 评论 -
每日算法22_2020-11-28
来源:题库 - 力扣 (LeetCode) (leetcode-cn.com)。侵删。 题目一 493. 翻转对 给定一个数组 nums ,如果 i < j 且 nums[i] > 2*nums[j] 我们就将 (i, j) 称作一个重要翻转对。 你需要返回给定数组中的重要翻转对的数量。 示例 1: 输入: [1,3,2,3,1] 输出: 2 示例 2: 输入: [2,4,3,5,1] 输出: 3 注意: 给定数组的长度不会超过50000。 输入数组中的所有数字都在32位整数的表示范围内。 .原创 2020-11-29 09:00:50 · 294 阅读 · 0 评论 -
每日算法21_2020-11-27
来源:题库 - 力扣 (LeetCode) (leetcode-cn.com)。侵删。 题目一 454. 四数相加 II 给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。 为了使问题简单化,所有的 A, B, C, D 具有相同的长度 N,且 0 ≤ N ≤ 500 。所有整数的范围在 -228 到 228 - 1 之间,最终结果不会超过 231 - 1 。 例如: 输入: A = .原创 2020-11-28 12:24:08 · 162 阅读 · 0 评论 -
每日算法20_2020-11-26
来源:题库 - 力扣 (LeetCode) (leetcode-cn.com)。侵删。 题目一 164. 最大间距 给定一个无序的数组,找出数组在排序之后,相邻元素之间最大的差值。 如果数组元素个数小于 2,则返回 0。 示例 1: 输入: [3,6,9,1] 输出: 3 解释: 排序后的数组是 [1,3,6,9], 其中相邻元素 (3,6) 和 (6,9) 之间都存在最大差值 3。 示例 2: 输入: [10] 输出: 0 解释: 数组元素个数小于 2,因此返回 0。 说明: 你可以假设数组中所有元素.原创 2020-11-26 10:42:51 · 161 阅读 · 0 评论 -
每日算法19_2020-11-25
来源:题库 - 力扣 (LeetCode) (leetcode-cn.com)。侵删。 题目一 1370. 上升下降字符串 给你一个字符串 s ,请你根据下面的算法重新构造字符串: 从 s 中选出 最小 的字符,将它 接在 结果字符串的后面。 从 s 剩余字符中选出 最小 的字符,且该字符比上一个添加的字符大,将它 接在 结果字符串后面。 重复步骤 2 ,直到你没法从 s 中选择字符。 从 s 中选出 最大 的字符,将它 接在 结果字符串的后面。 从 s 剩余字符中选出 最大 的字符,且该字符比上一个添.原创 2020-11-25 13:38:06 · 269 阅读 · 0 评论 -
每日算法18_2020-11-24
来源:题库 - 力扣 (LeetCode) (leetcode-cn.com)。侵删。 题目一 222. 完全二叉树的节点个数 给出一个完全二叉树,求出该树的节点个数。 说明: 完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。 示例: 输入: 1 / \ 2 3 / \ / 4 5 6 输出: 6 暴力法递归法 /** .原创 2020-11-25 13:37:46 · 134 阅读 · 0 评论 -
每日算法17_2020-11-23
来源:题库 - 力扣 (LeetCode) (leetcode-cn.com)。侵删。 题目一 452. 用最少数量的箭引爆气球 在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以纵坐标并不重要,因此只要知道开始和结束的横坐标就足够了。开始坐标总是小于结束坐标。 一支弓箭可以沿着 x 轴从不同点完全垂直地射出。在坐标 x 处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且满足 xstart ≤ x ≤ xen.原创 2020-11-25 13:07:59 · 229 阅读 · 0 评论 -
每日算法16_2020-11-22
来源:题库 - 力扣 (LeetCode) (leetcode-cn.com)。侵删。 题目一 242. 有效的字母异位词 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 示例 1: 输入: s = “anagram”, t = “nagaram” 输出: true 示例 2: 输入: s = “rat”, t = “car” 输出: false 说明: 你可以假设字符串只包含小写字母。 进阶: 如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这.原创 2020-11-25 13:07:39 · 120 阅读 · 0 评论 -
每日算法15_2020-11-21
来源:题库 - 力扣 (LeetCode) (leetcode-cn.com)。侵删。 题目一 148. 排序链表 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 进阶: 你可以在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序吗? 示例 1: 输入:head = [4,2,1,3] 输出:[1,2,3,4] 示例 2: 输入:head = [-1,5,3,4,0] 输出:[-1,0,3,4,5] 示例 3: 输入:head = [] 输出:[] 提示:.原创 2020-11-25 13:04:17 · 140 阅读 · 0 评论 -
每日算法14_2020-11-20
来源:题库 - 力扣 (LeetCode) (leetcode-cn.com)。侵删。 题目一 147. 对链表进行插入排序 对链表进行插入排序。 插入排序的动画演示如上。从第一个元素开始,该链表可以被认为已经部分排序(用黑色表示)。 每次迭代时,从输入数据中移除一个元素(用红色表示),并原地将其插入到已排好序的链表中。 插入排序算法: 插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。 每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其.原创 2020-11-25 13:03:52 · 150 阅读 · 0 评论 -
每日算法13_2020-11-19
来源:题库 - 力扣 (LeetCode) (leetcode-cn.com)。侵删。 题目一 283. 移动零 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明: 必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。 我的答案 class Solution { public void moveZeroes(int[] nums) { int z.原创 2020-11-25 12:59:34 · 160 阅读 · 0 评论 -
每日算法12_2020-11-18
来源:题库 - 力扣 (LeetCode) (leetcode-cn.com)。侵删。 题目一 105. 从前序与中序遍历序列构造二叉树 根据一棵树的前序遍历与中序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3 / \ 9 20 / \ 15 7 我的答案 递归 /** * Definition for .原创 2020-11-25 12:59:04 · 137 阅读 · 0 评论 -
每日算法11_2020-11-17
来源:题库 - 力扣 (LeetCode) (leetcode-cn.com)。侵删。 题目一 101. 对称二叉树 给定一个二叉树,检查它是否是镜像对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \ 3 4 4 3 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3 进阶: 你可以运用递归和迭代两种方法解决这个问题吗? 我的答.原创 2020-11-25 12:58:37 · 175 阅读 · 0 评论 -
每日算法10_2020-11-15
来源:题库 - 力扣 (LeetCode) (leetcode-cn.com)。侵删。 题目一 104. 二叉树的最大深度 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最大深度 3 。 我的答案 递归 /** * Definition for a binary t.原创 2020-11-24 11:07:19 · 172 阅读 · 0 评论 -
每日算法9_2020-11-14
来源:题库 - 力扣 (LeetCode) (leetcode-cn.com)。侵删。 题目一 94. 二叉树的中序遍历 给定一个二叉树的根节点 root ,返回它的 中序 遍历。 示例 1: 输入:root = [1,null,2,3] 输出:[1,3,2] 示例 2: 输入:root = [] 输出:[] 示例 3: 输入:root = [1] 输出:[1] 示例 4: 输入:root = [1,2] 输出:[2,1] 示例 5: 输入:root = [1,null,2] 输出:[1,2] 提示: .原创 2020-11-24 11:03:42 · 347 阅读 · 0 评论 -
每日算法8_2020-11-13
来源:题库 - 力扣 (LeetCode) (leetcode-cn.com)。侵删。 题目一 21. 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 我的答案 我没有答案,太菜了 好的答案(看不太懂) class Solution { public ListNode mergeTwoLi.原创 2020-11-24 11:03:08 · 365 阅读 · 0 评论 -
每日算法7_2020-11-11
来源:题库 - 力扣 (LeetCode) (leetcode-cn.com)。侵删。 题目一 13. 罗马数字转整数 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并列.原创 2020-11-24 10:58:05 · 182 阅读 · 0 评论 -
每日算法6_2020-11-10
来源:题库 - 力扣 (LeetCode) (leetcode-cn.com)。侵删。 题目一 1. 两数之和 难度简单9570收藏分享切换为英文接收动态反馈 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9.原创 2020-11-24 10:57:34 · 124 阅读 · 0 评论 -
每日算法5_2020-06-22
来源:题库 - 力扣 (LeetCode) (leetcode-cn.com)。侵删。 题目一 一维数组的动态和 给你一个数组 nums 。数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]…nums[i]) 。 请返回 nums 的动态和。 我的解答 class Solution { public int[] runningSum(int[] nums) { int[] ret = new int[nums.length]; in.原创 2020-11-24 10:57:02 · 516 阅读 · 0 评论 -
每日算法4_2020-06-10
来源:题库 - 力扣 (LeetCode) (leetcode-cn.com)。侵删。 题目一 LCP 01. 猜数字 小A 和 小B 在玩猜数字。小B 每次从 1, 2, 3 中随机选择一个,小A 每次也从 1, 2, 3 中选择一个猜。他们一共进行三次这个游戏,请返回 小A 猜对了几次? 输入的guess数组为 小A 每次的猜测,answer数组为 小B 每次的选择。guess和answer的长度都等于3。 示例1: 输入:guess = [1,2,3], answer = [1,2,3] .原创 2020-11-24 10:56:14 · 227 阅读 · 0 评论 -
每日算法3_2020-06-09
来源:题库 - 力扣 (LeetCode) (leetcode-cn.com)。侵删。 题目一 面试题58 - II. 左旋转字符串 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。 示例1: 输入: s = "abcdefg", k = 2 输出: "cdefgab" 示例2: 输入: s = "lrloseumgh", k = 6 输出: "um.原创 2020-11-24 10:55:46 · 103 阅读 · 0 评论 -
每日算法2_2020-06-08
来源:题库 - 力扣 (LeetCode) (leetcode-cn.com)。侵删。 题目一 给你一个数组 candies 和一个整数 extraCandies ,其中 candies[i] 代表第 i 个孩子拥有的糖果数目。 对每一个孩子,检查是否存在一种方案,将额外的 extraCandies 个糖果分配给孩子们之后,此孩子有 最多 的糖果。注意,允许有多个孩子同时拥有 最多 的糖果数目。 示例1: 输入:candies = [2,3,5,1,3], extraCandies = 3 输出:[tr.原创 2020-11-24 10:54:27 · 161 阅读 · 0 评论 -
每日算法1_2020-06-05
来源:题库 - 力扣 (LeetCode) (leetcode-cn.com)。侵删。 题目一 泰波那契序列 Tn 定义如下: T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2 给你整数 n,请返回第 n 个泰波那契数 Tn 的值。 示例 1: 输入:n = 4 输出:4 解释: T_3 = 0 + 1 + 1 = 2 T_4 = 1 + 1 + 2 = 4 示例 2: 输入:n = 25 输出:1389537 提示:.原创 2020-11-24 10:53:03 · 137 阅读 · 0 评论
分享