![](https://img-blog.csdnimg.cn/9b79d97a2be24f5786fce9f89832ff14.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
力扣
每天一道算法题
狗头实习生
通俗易懂的语言讲解后端技术栈以及算法,精通拿来主义。(励志变成生产队的驴)
展开
-
高频面试题——和为 k 的子数组
当我们去想要判断第j个数是否有成立的条件时,我们只需要去判断第j个数减去0到i个数的和(0原创 2022-07-15 08:58:44 · 375 阅读 · 0 评论 -
剑指 Offer 64. 求1+2+…+n
求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。示例 1:输入: n = 3输出: 6示例 2:输入: n = 9输出: 45限制:1原创 2022-07-06 21:33:26 · 113 阅读 · 0 评论 -
力扣—DP:最后一块石头的重
原题链接:1049. 最后一块石头的重量 II - 力扣(LeetCode) (leetcode-cn.com)有一堆石头,用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下:如果x == y,那么两块石头都会被完全粉碎;如果x != y,那么重量为x的石头将会完全粉碎,而重量为y的石头新重量为y-x。最后,最...原创 2022-04-19 09:05:29 · 190 阅读 · 0 评论 -
力扣—DP:分割等和子集
原题连接:https://leetcode-cn.com/problems/partition-equal-subset-sum给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。示例 1:输入:nums = [1,5,11,5]输出:true解释:数组可以分割成 [1, 5, 5] 和 [11] 。示例 2:输入:nums = [1,2,3,5]输出:false解释:数组不能分割成两个元素和相等的子集.原创 2022-04-17 22:41:23 · 459 阅读 · 0 评论 -
力扣—DP:不同的二叉搜索树
原题链接96. 不同的二叉搜索树 - 力扣(LeetCode) (leetcode-cn.com)给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。示例 1:输入:n = 3输出:5示例 2:输入:n = 1输出:1提示:1 <= n <= 19拿到题之后并不是很好想,我们可以画一下n=1和n=2的情况下面分别是n=1和n=2的结点图。由此我们不难发现,当.原创 2022-04-13 23:40:01 · 126 阅读 · 0 评论 -
力扣—DP:整数拆分
原题连接:343. 整数拆分 - 力扣(LeetCode) (leetcode-cn.com)给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k >= 2 ),并使这些整数的乘积最大化。返回 你可以获得的最大乘积 。示例 1:输入: n = 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1。示例2:输入: n = 10输出: 36解释: 10 = 3 + 3 + 4, 3 ×3 ×4 = 36。思考搞一下:首先,我们来确定...原创 2022-04-12 23:48:33 · 488 阅读 · 0 评论 -
力扣—DP:不同路径 II
一个机器人位于一个m x n网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。示例 1:输入:obstacleGrid = [[0,0,0],[0,1,0],[0,0,0]]输出:2解释:3x3 网格的正中间有一个障碍物。从左上角到右下角一共有 2 ..原创 2022-04-11 21:36:57 · 141 阅读 · 0 评论 -
力扣—DP:不同路径
一个机器人位于一个 m x n网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?示例 1:输入:m = 3, n = 7输出:28示例 2:输入:m = 3, n = 2输出:3解释:从左上角开始,总共有 3 条路径可以到达右下角。1. 向右 -> 向下 -> 向下2. 向下 -> 向下 -> 向右3. 向.原创 2022-04-10 23:21:06 · 152 阅读 · 0 评论 -
力扣—贪心:加油站
在一条环路上有 n个加油站,其中第 i个加油站有汽油gas[i]升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1个加油站需要消耗汽油cost[i]升。你从其中的一个加油站出发,开始时油箱为空。给定两个整数数组 gas 和 cost ,如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1 。如果存在解,则 保证 它是 唯一 的。示例1:输入: gas = [1,2,3,4,5], cost = [3,4,5,1,2]输出: 3解释:从 3...原创 2022-03-19 11:58:49 · 879 阅读 · 1 评论 -
力扣—贪心:跳跃游戏 II
给你一个非负整数数组 nums ,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。假设你总是可以到达数组的最后一个位置。示例 1:输入: nums = [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。 从下标为 0 跳到下标为 1 的位置,跳1步,然后跳3步到达数组的最后一个位置。示例 2:输入: nums = [2,3,0,1,4]输出: 2...原创 2022-03-17 22:24:34 · 136 阅读 · 0 评论 -
力扣—剑指offer:从上到下打印二叉树
从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。例如:给定二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回:[3,9,20,15,7]树的层序遍历思路: 记录当前节点的val 结点左孩子存在 添加到列表尾部 结点右孩子存在 添加到列表尾部可以用队列来实现这种先进先出的顺序,这里我用的是LinkedList...原创 2022-03-13 23:40:29 · 832 阅读 · 0 评论 -
力扣—剑指offer:0~n-1中缺失的数字
一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。示例 1:输入: [0,1,3]输出: 2示例2:输入: [0,1,2,3,4,5,6,7,9]输出: 8限制:1 <= 数组长度 <= 10000思路前半部分的数组下标和数组值是一一对应的,所以我只要能找到那一个数组下标于数组值不一致的断点即可。...原创 2022-03-12 18:33:40 · 570 阅读 · 0 评论 -
力扣—剑指offer:在排序数组中查找数字
统计一个数字在排序数组中出现的次数。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: 2示例2:输入: nums = [5,7,7,8,8,10], target = 6输出: 0提示:0 <= nums.length <= 105-109<= nums[i]<= 109nums是一个非递减数组-109<= target<= 109最简单的方法就是排序遍历,挨个比对但...原创 2022-03-12 17:43:12 · 1302 阅读 · 0 评论 -
力扣—剑指offer:左旋转字符串
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。示例 1:输入: s = "abcdefg", k = 2输出:"cdefgab"示例 2:输入: s = "lrloseumgh", k = 6输出:"umghlrlose"简单题,这道题我做一个记录的原因是学到了一种取余遍历数组的骚操作。这题我的第一个想法就是字符拼接,先..原创 2022-03-12 15:58:15 · 120 阅读 · 0 评论 -
力扣—剑指offer:复杂链表的复制
请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。示例 1:输入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]]输出:[[7,null],[13,0],[11,4],[10,2],[1,0]]示例 2:输入:head = [[1,1],[2,1]]输出:[[1,1],[2,1]]示例 3:.原创 2022-03-12 15:38:50 · 87 阅读 · 0 评论 -
力扣—剑指offer:替换空格
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = "We are happy."输出:"We%20are%20happy."简单题,就是遍历字符串,遇到空格就替换成“%20”。主要用到的知识点就是StringBuilder的append方法可以进行拼接字符串class Solution { public String replaceSpace(String s) { StringBuilder sum = new String原创 2022-03-12 15:11:49 · 142 阅读 · 0 评论