
leetcode
任老爸张
无他,唯手熟尔
展开
-
剑指 Offer 11. 旋转数组的最小数字
1原创 2022-07-01 11:52:59 · 345 阅读 · 1 评论 -
剑指 Offer 04. 二维数组中的查找
leetcode原创 2022-06-28 10:44:24 · 342 阅读 · 0 评论 -
Leetcode:面试题 04.02. 最小高度树(递归)
面试题 04.02. 最小高度树难度简单68收藏分享切换为英文接收动态反馈给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / -10 5 通过次数22,111提交次数2原创 2021-01-08 16:04:38 · 159 阅读 · 0 评论 -
疫情在家 每天写点博客吧
最近石家庄疫情有有点严重了,学校就提前放假了,昨天中午还在准备下午的算法考试, (算法考试一点没看),今天就在家里了,显然在家里也是很难能出门了那就每天做点题,好好的写点博客吧,毕竟接下来就大三下了,要考研了,这段时间就认真一点吧...原创 2021-01-06 15:37:47 · 225 阅读 · 0 评论 -
Leetcode:860. 柠檬水找零(简单模拟)
考试周,忙于复习和英语六级,有不用脑子的题就写一下,没有就还是要备考,860. 柠檬水找零难度简单177收藏分享切换为英文接收动态反馈在柠檬水摊上,每一杯柠檬水的售价为5美元。顾客排队购买你的产品,(按账单bills支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付5美元、10美元或20美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付5美元。注意,一开始你手头没有任何零钱。如果你能给每位顾客正确找零,返回true,否则返回fa...原创 2020-12-10 17:47:27 · 146 阅读 · 0 评论 -
LeetCode:140. 单词拆分 II(动规+回溯)
140. 单词拆分 II难度困难270收藏分享切换为英文接收动态反馈给定一个非空字符串s和一个包含非空单词列表的字典wordDict,在字符串中增加空格来构建一个句子,使得句子中所有的单词都在词典中。返回所有这些可能的句子。说明:分隔时可以重复使用字典中的单词。 你可以假设字典中没有重复的单词。示例 1:输入:s = "catsanddog"wordDict = ["cat", "cats", "and", "sand", "dog"]输出:[ "cats and...原创 2020-11-01 09:56:51 · 492 阅读 · 0 评论 -
Leetcode:139. 单词拆分(动规)
139. 单词拆分难度中等726收藏分享切换为英文接收动态反馈给定一个非空字符串s和一个包含非空单词的列表wordDict,判定s是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。 你可以假设字典中没有重复的单词。示例 1:输入: s = "leetcode", wordDict = ["leet", "code"]输出: true解释: 返回 true 因为 "leetcode" 可以被拆分成 "leet code"。示例...原创 2020-11-01 09:46:48 · 284 阅读 · 0 评论 -
关于leetcode的全局变量
leetcode的函数一定要带有你需要的各种参数,想要用全局动态容器来存入函数中的数,在leetcode中难以通过编译,所以用什么容器,写什么引用,才是正确规范的做法原创 2020-10-30 17:10:22 · 1934 阅读 · 0 评论 -
Leetcode:463. 岛屿的周长(dfs||迭代)
463. 岛屿的周长难度简单316收藏分享切换为英文接收动态反馈给定一个包含 0 和 1 的二维网格地图,其中 1 表示陆地0 表示水域。网格中的格子水平和垂直方向相连(对角线方向不相连)。整个网格被水完全包围,但其中恰好有一个岛屿(或者说,一个或多个表示陆地的格子相连组成的岛屿)。岛屿中没有“湖”(“湖” 指水域在岛屿内部且不和岛屿周围的水相连)。格子是边长为 1 的正方形。网格为长方形,且宽度和高度均不超过 100 。计算这个岛屿的周长。示例 :输入:[[0,1,0,..原创 2020-10-30 17:05:27 · 171 阅读 · 0 评论 -
Leetcode:144. 二叉树的前序遍历(简单递归)
144. 二叉树的前序遍历难度中等423收藏分享切换为英文接收动态反馈给定一个二叉树,返回它的前序遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3]进阶:递归算法很简单,你可以通过迭代算法完成吗?通过次数208,401提交次数305,979这道题用递归算法确实很简单,甚至不能再简单了,相信学过数的遍历的定然是能够做出来的,至于迭代算法,我就自己想想,不写在这里了,毕竟迭代学的还是...原创 2020-10-27 17:48:34 · 140 阅读 · 0 评论 -
1024. 视频拼接(动态规划)
视频拼接你将会获得一系列视频片段,这些片段来自于一项持续时长为 T 秒的体育赛事。这些片段可能有所重叠,也可能长度不一。视频片段 clips[i] 都用区间进行表示:开始于 clips[i][0] 并于 clips[i][1] 结束。我们甚至可以对这些片段自由地再剪辑,例如片段 [0, 7] 可以剪切成 [0, 1] + [1, 3] + [3, 7] 三部分。我们需要将这些片段进行再剪辑,并将剪辑后的内容拼接成覆盖整个运动过程的片段([0, T])。返回所需片段的最小数目,如果无法完成该任务,则.原创 2020-10-24 10:24:04 · 33458 阅读 · 0 评论 -
Leetcode:1288. 删除被覆盖区间(贪心算法)
1288. 删除被覆盖区间难度中等20收藏分享切换为英文接收动态反馈给你一个区间列表,请你删除列表中被其他区间所覆盖的区间。只有当c <= a且b <= d时,我们才认为区间[a,b)被区间[c,d)覆盖。在完成所有删除操作后,请你返回列表中剩余区间的数目。示例:输入:intervals = [[1,4],[3,6],[2,8]]输出:2解释:区间 [3,6] 被区间 [2,8] 覆盖,所以它被删除了。提示:1 &l...原创 2020-10-23 19:47:12 · 368 阅读 · 0 评论 -
Leetcode:1414. 和为 K 的最少斐波那契数字数目(贪心)
1414. 和为 K 的最少斐波那契数字数目难度中等15收藏分享切换为英文接收动态反馈给你数字k,请你返回和为k的斐波那契数字的最少数目,其中,每个斐波那契数字都可以被使用多次。斐波那契数字定义为:F1= 1 F2= 1 Fn= Fn-1+ Fn-2, 其中 n > 2 。数据保证对于给定的k,一定能找到可行解。示例 1:输入:k = 7输出:2 解释:斐波那契数字为:1,1,2,3,5,8,13,……对于 k = 7 ,我们可以得到 ...原创 2020-10-22 16:28:29 · 134 阅读 · 0 评论 -
Leetcode:1247. 交换字符使得字符串相同
1247. 交换字符使得字符串相同难度中等33收藏分享切换为英文接收动态反馈有两个长度相同的字符串s1和s2,且它们其中只含有字符"x"和"y",你需要通过「交换字符」的方式使这两个字符串相同。每次「交换字符」的时候,你都可以在两个字符串中各选一个字符进行交换。交换只能发生在两个不同的字符串之间,绝对不能发生在同一个字符串内部。也就是说,我们可以交换s1[i]和s2[j],但不能交换s1[i]和s1[j]。最后,请你返回使s1和s2相同的最小交换次数,...原创 2020-10-21 18:18:27 · 288 阅读 · 0 评论 -
Leetcode:143. 重排链表
重排链表给定一个单链表 L:L0→L1→…→Ln-1→Ln ,将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→…你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例 1:给定链表 1->2->3->4, 重新排列为 1->4->2->3.示例 2:给定链表 1->2->3->4->5, 重新排列为 1->5->2->4->3.通过次数59,162提交次数100,066这道.原创 2020-10-20 18:16:14 · 135 阅读 · 0 评论 -
LeetCode:19. 删除链表的倒数第N个节点(快慢指针)
问题描述:给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list著作权归领扣网原创 2020-10-18 19:07:35 · 150 阅读 · 0 评论 -
Leetcode:1029. 两地调度(贪心)
两地调度公司计划面试 2N 人。第 i 人飞往 A 市的费用为 costs[i][0],飞往 B 市的费用为 costs[i][1]。返回将每个人都飞到某座城市的最低费用,要求每个城市都有 N 人抵达。示例:输入:[[10,20],[30,200],[400,50],[30,20]]输出:110解释:第一个人去 A 市,费用为 10。第二个人去 A 市,费用为 30。第三个人去 B 市,费用为 50。第四个人去 B 市,费用为 20。最低总费用为 10 + 30 + 50 + 20.原创 2020-10-14 19:04:42 · 329 阅读 · 0 评论 -
关于链表中,指针的运用详解
*2020.10.9每日一题,很详细的链表问题详解,在此记录一下地址链表问题详解原创 2020-10-09 10:36:11 · 456 阅读 · 0 评论 -
Leetcode:18. 四数之和(双指针,排序后遍历)
四数之和给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例:给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组集合为:[[-1, 0, 0, 1],[-2, -1, 1, 2],[-2, 0, 0, 2]]通.原创 2020-10-05 11:19:40 · 130 阅读 · 0 评论 -
Leetcode:2. 两数相加(链表的应用)
两数相加给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807通过次数576,138提交次数1,499,041力扣.原创 2020-10-04 15:05:41 · 96 阅读 · 0 评论 -
Leetcode:划分字母区间(贪心算法)
划分字母区间字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一个字母只会出现在其中的一个片段。返回一个表示每个字符串片段的长度的列表。示例 1:输入:S = “ababcbacadefegdehijhklij”输出:[9,7,8]解释:划分结果为 “ababcbaca”, “defegde”, “hijhklij”。每个字母最多出现在一个片段中。像 “ababcbacadefegde”, “hijhklij” 的划分是错误的,因为划分的片段数较少。提示:S的长度.原创 2020-10-03 15:18:20 · 265 阅读 · 0 评论 -
Leetcode:1282. 用户分组(贪心,hash)
1282. 用户分组有 n 位用户参加活动,他们的 ID 从 0 到 n - 1,每位用户都 恰好 属于某一用户组。给你一个长度为 n 的数组 groupSizes,其中包含每位用户所处的用户组的大小,请你返回用户分组情况(存在的用户组以及每个组中用户的 ID)。你可以任何顺序返回解决方案,ID 的顺序也不受限制。此外,题目给出的数据保证至少存在一种解决方案。示例 1:输入:groupSizes = [3,3,3,3,3,1,3]输出:[[5],[0,1,2],[3,4,6]]解释:其他可能原创 2020-10-03 11:15:20 · 238 阅读 · 0 评论 -
Leetcode:1. 两数之和(每日一题,爷青回)
两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]2020,10,3,力扣每日一题,two sum,爷青回这道题显然每个力扣用户都做过了吧,这里只是简单的记录一下方法,1双.原创 2020-10-03 10:53:55 · 135 阅读 · 0 评论 -
Leetcode:874. 模拟行走机器人(贪心,行走模拟)
模拟行走机器人机器人在一个无限大小的网格上行走,从点 (0, 0) 处开始出发,面向北方。该机器人可以接收以下三种类型的命令:-2:向左转 90 度-1:向右转 90 度1 <= x <= 9:向前移动 x 个单位长度在网格上有一些格子被视为障碍物。第 i 个障碍物位于网格点 (obstacles[i][0], obstacles[i][1])机器人无法走到障碍物上,它将会停留在障碍物的前一个网格方块上,但仍然可以继续该路线的其余部分。返回从原点到机器人所有经过的路径点(坐.原创 2020-10-03 10:51:17 · 187 阅读 · 0 评论 -
Leetcode :771. 宝石与石头(简单的暴力循环 string用法)
宝石与石头给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。示例 1:输入: J = “aA”, S = “aAAbbbb”输出: 3示例 2:输入: J = “z”, S = “ZZ”输出: 0注意:S 和 J 最多含有50个字母。J 中的字符不重复。通过次数102,435提交次.原创 2020-10-02 11:08:25 · 149 阅读 · 0 评论 -
Leetcode:122. 买卖股票的最佳时机 II(贪心算法)
122. 买卖股票的最佳时机 II给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。随后,在第 4 天(股票价格 = 3)的时候原创 2020-09-21 10:06:32 · 287 阅读 · 1 评论 -
Leetcode:538. 把二叉搜索树转换为累加树(逆序中序遍历)
538. 把二叉搜索树转换为累加树给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。输入: 原始二叉搜索树:5/ 2 13输出: 转换为累加树:18/ 20 13看到题呢,二叉搜索树,就应该想到二叉搜索树的性质,中序遍历递增,那么逆序自然是递减的,况且,右边的永远大于结点,那么吧右边的依次加到上边的节点内就OK了/** * Definition原创 2020-09-21 09:45:32 · 165 阅读 · 0 评论 -
Leetcode:659. 分割数组为连续子序列(为什么我的脑洞这么小啊!)
659. 分割数组为连续子序列给你一个按升序排序的整数数组 num(可能包含重复数字),请你将它们分割成一个或多个子序列,其中每个子序列都由连续整数组成且长度至少为 3 。如果可以完成上述分割,则返回 true ;否则,返回 false 。示例 1:输入: [1,2,3,3,4,5]输出: True解释:你可以分割出这样两个连续子序列 :1, 2, 33, 4, 5示例 2:输入: [1,2,3,3,4,4,5,5]输出: True解释:你可以分割出这样两个连续子序列 :1,原创 2020-09-05 15:47:06 · 233 阅读 · 0 评论 -
Leetcode:373. 查找和最小的K对数字(指针,类似丑数,优先队列,小顶堆)
查找和最小的K对数字给定两个以升序排列的整形数组 nums1 和 nums2, 以及一个整数 k。定义一对值 (u,v),其中第一个元素来自 nums1,第二个元素来自 nums2。找到和最小的 k 对数字 (u1,v1), (u2,v2) … (uk,vk)。示例 1:输入: nums1 = [1,7,11], nums2 = [2,4,6], k = 3输出: [1,2],[1,4],[1,6]解释: 返回序列中的前 3 对数:[1,2],[1,4],[1,6],[7,2],[7,4.原创 2020-09-04 16:53:41 · 122 阅读 · 0 评论 -
Leetcode:743. 网络延迟时间k(dijkstra)
网络延迟时间有 N 个网络节点,标记为 1 到 N。给定一个列表 times,表示信号经过有向边的传递时间。 times[i] = (u, v, w),其中 u 是源节点,v 是目标节点, w 是一个信号从源节点传递到目标节点的时间。现在,我们从某个节点 K 发出一个信号。需要多久才能使所有节点都收到信号?如果不能使所有节点收到信号,返回 -1。示例:输入:times = [[2,1,1],[2,3,1],[3,4,1]], N = 4, K = 2输出:2这道题呢,理解题目后自然是能明白.原创 2020-09-04 16:30:13 · 201 阅读 · 0 评论 -
Leetcode :257. 二叉树的所有路径(dfs || bfs)
二叉树的所有路径给定一个二叉树,返回所有从根节点到叶子节点的路径。说明: 叶子节点是指没有子节点的节点。示例:输入:1/ 2 35输出: [“1->2->5”, “1->3”]解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3这道题还是比较常规的深度优先遍历的,递归一手函数就ok了,或者用bfs,不过bfs还是略微有一点麻烦的,但是不需要递归,class Solution {public: void co.原创 2020-09-04 16:06:09 · 172 阅读 · 0 评论 -
Leetcode:692. 前K个高频单词(C++,利用map,利用vector pair进行排序)
前K个高频单词给一非空的单词列表,返回前 k 个出现次数最多的单词。返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率,按字母顺序排序。示例 1:输入: [“i”, “love”, “leetcode”, “i”, “love”, “coding”], k = 2输出: [“i”, “love”]解析: “i” 和 “love” 为出现次数最多的两个单词,均为2次。注意,按字母顺序 “i” 在 “love” 之前。示例 2:输入: [“the”, “day”, “i.原创 2020-09-03 16:30:23 · 354 阅读 · 0 评论 -
LeetCode :面试题 17.09. 第 k 个数 (三指针)
有些数的素因子只有 3,5,7,请设计一个算法找出第 k 个数。注意,不是必须有这些素因子,而是必须不包含其他的素因子。例如,前几个数按顺序应该是 1,3,5,7,9,15,21。示例 1:输入: k = 5输出: 9通过次数5,384提交次数10,015这道题呢,看懂了题目自然也是明白,就是从1开始乘3,5,7,然后排序,找到第K个数就ok,那么该怎么才能找到呢这里用三指针第一个指针是指向*3 第二个*5,第三个*7每次选取最小的数,让指针往后++;clas...原创 2020-09-03 16:02:43 · 158 阅读 · 0 评论 -
LeetCode:392. 判断子序列(贪心,双指针)
给定字符串 s 和 t ,判断 s 是否为 t 的子序列。你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=100)。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。示例 1:s = “abc”, t = “ahbgdc”返回 true.示例 2:s = “axc”, t = “ahbgdc原创 2020-07-27 09:12:37 · 120 阅读 · 0 评论 -
Leetcode:64. 最小路径和(动态规划)
给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[[1,3,1],[1,5,1],[4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。傻了,与另一道题几乎一模一样,只不过这个是求最小和,另一个是最大和,贴上链接https://leetcode-cn.com/problems/li-wu-de-zui-da-jie-zhi-lcof/class Soluti原创 2020-06-11 10:27:15 · 256 阅读 · 0 评论 -
Leetcode:面试题47. 礼物的最大价值(动态规划)
在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?示例 1:输入:[[1,3,1],[1,5,1],[4,2,1]]输出: 12解释: 路径 1→3→5→2→1 可以拿到最多价值的礼物提示:0 < grid.length <= 2000 < grid[0].length &l原创 2020-06-11 09:56:11 · 432 阅读 · 0 评论 -
PAT:1011 World Cup Betting (20分)(简单结构体)
With the 2010 FIFA World Cup running, football fans the world over were becoming increasingly excited as the best players from the best teams doing battles for the World Cup trophy in South Africa. Similarly, football betting fans were putting their money原创 2020-06-10 15:12:24 · 128 阅读 · 0 评论 -
LeetCode:1292. 元素和小于等于阈值的正方形的最大边长(二维前缀和)
1292. 元素和小于等于阈值的正方形的最大边长给你一个大小为 m x n 的矩阵 mat 和一个整数阈值 threshold。请你返回元素总和小于或等于阈值的正方形区域的最大边长;如果没有这样的正方形区域,则返回 0 。示例 1:输入:mat = [[1,1,3,2,4,3,2],[1,1,3,2,4,3,2],[1,1,3,2,4,3,2]], threshold = 4输出:2解释:总和小于 4 的正方形的最大边长为 2,如图所示。示例 2:输入:mat = [[2,2,2,2,2],原创 2020-06-10 10:58:58 · 368 阅读 · 0 评论 -
LeetCode:746. 使用最小花费爬楼梯(动态规划)
746. 使用最小花费爬楼梯数组的每个索引作为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 costi。每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或者爬两个阶梯。您需要找到达到楼层顶部的最低花费。在开始时,你可以选择从索引为 0 或 1 的元素作为初始阶梯。示例 1:输入: cost = [10, 15, 20]输出: 15解释: 最低花费是从cost[1]开始,然后走两步即可到阶梯顶,一共花费15。示例 2:输入: cost = [1, 100, 1原创 2020-06-08 17:37:27 · 209 阅读 · 0 评论 -
Leetcode:面试题 08.01. 三步问题(动态规划,取模方法)
面试题 08.01. 三步问题三步问题。有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶或3阶。实现一种方法,计算小孩有多少种上楼梯的方式。结果可能很大,你需要对结果模1000000007。示例1:输入:n = 3输出:4说明: 有四种走法示例2:输入:n = 5输出:13提示:n范围在[1, 1000000]之间这道题显然是要用到动态规划,而且与爬楼梯的另一道题基本一样,只是多了可以一次爬三层而已另一道爬楼梯可以看下面的链接https://blog.csdn.ne原创 2020-06-08 16:33:39 · 607 阅读 · 2 评论