
Leetcode Daily
文章平均质量分 56
NULL
I-Hsien
这个作者很懒,什么都没留下…
展开
-
[Instant Note] LinklistReverse
这几天写算法的时候碰到这个坑了好长时间的题,第一次自己写出来了,做一个记录思路长度为1,2时单独处理长度大于等于三时:简单画了一下,看个意思更详细的解答看https://leetcode-cn.com/problems/fan-zhuan-lian-biao-lcof/solution/fan-zhuan-lian-biao-by-leetcode-solution-jvs5/代码# Definition for singly-linked list.# class ListNode.原创 2021-09-18 15:02:39 · 245 阅读 · 0 评论 -
[INSTANT NOTE] 模式匹配KMP算法
0x00使用场景字符串匹配:给定模板串aaa和目标串bbb,求bbb是否为aaa的子串;如果是,返回开始的indexindexindex。0x01暴力算法基本思想:如果当前字符匹配成功(S[i]==P[j]S[i] == P[j]S[i]==P[j]),则i++,j++,继续匹配下一个字符;如果失配(即S[i]!=P[j]S[i]! = P[j]S[i]!=P[j]),i=i−(j−1),j=0i = i - (j - 1),j = 0i=i−(j−1),j=0。相当于每次匹配失败时,i 回溯,j原创 2021-06-09 20:21:58 · 116 阅读 · 0 评论 -
[Leetcode Daily] 80. 删除有序数组中的重复项 II
Description给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 最多出现两次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。输入:nums = [1,1,1,2,2,3]输出:5, nums = [1,1,2,2,3]解释:函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3 。 不需要考虑数组中超出新长度后面的元素。思路这个思路还有点难想原创 2021-04-18 16:59:26 · 141 阅读 · 0 评论 -
[Leetcode Daily] 208. 实现 Trie (前缀树)
DescriptionTrie(发音类似 “try”)或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补完和拼写检查。请你实现 Trie 类:Trie() 初始化前缀树对象。void insert(String word) 向前缀树中插入字符串 word 。boolean search(String word) 如果字符串 word 在前缀树中,返回 true(即,在检索之前已经插入);否则,返回 false 。boolean原创 2021-04-15 20:36:07 · 184 阅读 · 0 评论 -
[Leetcode Daily] 61. 旋转链表
Description给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。输入:head = [1,2,3,4,5], k = 2输出:[4,5,1,2,3]思路非常直观的思路,就是先遍历到最后,连接成为一个循环链表,然后双指针移动一定的步数,断开循环链表返回头部。一点优化注意到0<=k<=2∗1090 <= k <= 2 * 10^90<=k<=2∗109,Nodes∈[0,500]Nodes\in[0,500]Nodes∈[0原创 2021-03-27 12:43:05 · 185 阅读 · 0 评论 -
[INSTANT NOTE] Python求补码模板代码
来源于剑指11,二进制中1的个数。补码正数:原码负数: Abs(n)+1~Abs(n)+1 Abs(n)+1实现假定需要32位补码。正数很好实现,主要是负数。n=-nn=~n+1这两步都没有问题,但最后显示的是-1。为了修正答案,应该进行一个mask,即n=n&0xffffffff完事。完整代码def NumberOf1(self, n): if n>=0: a=bin(n) count=0 fo原创 2021-03-25 13:33:56 · 357 阅读 · 0 评论 -
[LeetcodeDaily] 705. 设计哈希集合
Description不使用任何内建的哈希表库设计一个哈希集合(HashSet)。实现 MyHashSet 类:void add(key) 向哈希集合中插入值 key 。bool contains(key) 返回哈希集合中是否存在这个值 key 。void remove(key) 将给定值 key 从哈希集合中删除。如果哈希集合中没有这个值,什么也不做。示例:输入:[“MyHashSet”, “add”, “add”, “contains”, “contains”, “add”, “cont原创 2021-03-13 13:26:41 · 148 阅读 · 0 评论 -
[Leetcode Daily] 1047. 删除字符串中的所有相邻重复项
Description给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。示例:输入:“abbaca”输出:“ca”解释:例如,在 “abbaca” 中,我们可以删除 “bb” 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 “aaca”,其中又只有 “aa” 可以执行重复项删除操作,所以最后的字符串为 “ca”。T原创 2021-03-09 11:07:12 · 169 阅读 · 0 评论 -
[Leetcode Daily] 232. 用栈实现队列
Description请你仅使用两个栈实现先入先出队列。队列应当支持一般队列的支持的所有操作(push、pop、peek、empty):实现 MyQueue 类:void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int peek() 返回队列开头的元素boolean empty() 如果队列为空,返回 true ;否则,返回 false说明:你只能使用标准的栈操作 —— 也就是只有 push to top, peek/pop from原创 2021-03-05 09:42:03 · 140 阅读 · 1 评论 -
[Leetcode Daily] 354. 俄罗斯套娃信封问题
Description给你一个二维整数数组 envelopes ,其中 envelopes[i] = [wi, hi] ,表示第 i 个信封的宽度和高度。当另一个信封的宽度和高度都比这个信封大的时候,这个信封就可以放进另一个信封里,如同俄罗斯套娃一样。请计算 最多能有多少个 信封能组成一组“俄罗斯套娃”信封(即可以把一个信封放到另一个信封里面)。注意:不允许旋转信封。示例 1:输入:envelopes = [[5,4],[6,4],[6,7],[2,3]]输出:3解释:最多信封的个数为 3,原创 2021-03-04 21:30:48 · 201 阅读 · 1 评论 -
[Leetcode Daily] 338. 比特位计数
Description给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。示例 1:输入: 2输出: [0,1,1]示例 2:输入: 5输出: [0,1,1,2,1,2]要求:给出时间复杂度为O(n*sizeof(integer))的解答非常容易。但你可以在线性时间O(n)内用一趟扫描做到吗?要求算法的空间复杂度为O(n)。 你能进一步完善解法吗?要求在C++或任何其他语言中不使用任何内置函数(如 C++原创 2021-03-03 09:22:32 · 117 阅读 · 0 评论 -
[Leetcode Daily] 304. 二维区域和检索 - 矩阵不可变
Description给定一个二维矩阵,计算其子矩形范围内元素的总和,该子矩阵的左上角为 (row1, col1) ,右下角为 (row2, col2) 。示例:给定 matrix = [[3, 0, 1, 4, 2],[5, 6, 3, 2, 1],[1, 2, 0, 1, 5],[4, 1, 0, 1, 7],[1, 0, 3, 0, 5]]sumRegion(2, 1, 4, 3) -> 8sumRegion(1, 1, 2, 2) -> 11sumRegion(1原创 2021-03-02 23:57:01 · 127 阅读 · 1 评论 -
[Leetcode daily] 303. 区域和检索 - 数组不可变
Description给定一个整数数组 nums,求出数组从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点。实现 NumArray 类:NumArray(int[] nums) 使用数组 nums 初始化对象int sumRange(int i, int j) 返回数组 nums 从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点(也就是 sum(nums[i], nums[i + 1], … , nums[j]))示例:输入:["NumArray",原创 2021-03-01 20:15:39 · 168 阅读 · 0 评论 -
[Leetcode Daily]896. 单调数列
Description如果数组是单调递增或单调递减的,那么它是单调的。如果对于所有 i <= j,A[i] <= A[j],那么数组 A 是单调递增的。 如果对于所有 i <= j,A[i]> = A[j],那么数组 A 是单调递减的。当给定的数组 A 是单调数组时返回 true,否则返回 false。思路第一反应是玩点骚的,使用python的sort()方法。具体使用方法是sort之后该list就变成了有序的,可以在reverse参数中选择升序或降序,而不是返回一个有序原创 2021-02-28 12:05:44 · 214 阅读 · 1 评论 -
[Leetcode Daily] 395. 至少有 K 个重复字符的最长子串
Description给你一个字符串 s 和一个整数 k ,请你找出 s 中的最长子串, 要求该子串中的每一字符出现次数都不少于 k 。返回这一子串的长度。示例 1:输入:s = “aaabb”, k = 3输出:3解释:最长子串为 “aaa” ,其中 ‘a’ 重复了 3 次。示例 2:输入:s = “ababbc”, k = 2输出:5解释:最长子串为 “ababb” ,其中 ‘a’ 重复了 2 次, ‘b’ 重复了 3 次。提示:1 <= s.length <= 104原创 2021-02-27 22:41:10 · 334 阅读 · 0 评论 -
[Leetcode Daily] 867. 转置矩阵
Description给你一个二维整数数组 matrix, 返回 matrix 的 转置矩阵 。矩阵的 转置 是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。Tips:矩阵不一定是n×nn\times nn×n的。思路本来是一个很简单的实现题,结果卡在实现上了。。。初始化一个转置后尺寸的矩阵,然后遍历一个个填进去。代码class Solution: def transpose(self, matrix: List[List[int]]) -> List[List[int原创 2021-02-25 21:31:34 · 143 阅读 · 0 评论 -
[Leetcode Daily] 832. 翻转图像
Description给定一个二进制矩阵 A,我们想先水平翻转图像,然后反转图像并返回结果。水平翻转图片就是将图片的每一行都进行翻转,即逆序。例如,水平翻转 [1, 1, 0] 的结果是 [0, 1, 1]。反转图片的意思是图片中的 0 全部被 1 替换, 1 全部被 0 替换。例如,反转 [0, 1, 1] 的结果是 [1, 0, 0]。示例 1:输入:[[1,1,0],[1,0,1],[0,0,0]]输出:[[1,0,0],[0,1,0],[1,1,1]]解释:首先翻转每一行: [[0,原创 2021-02-24 10:55:50 · 135 阅读 · 0 评论 -
[Leetcode Daily] 1052. 爱生气的书店老板
Description今天,书店老板有一家店打算试营业 customers.length分钟。每分钟都有一些顾客(customers[i])会进入书店,所有这些顾客都会在那一分钟结束后离开。在某些时候,书店老板会生气。 如果书店老板在第 i 分钟生气,那么 grumpy[i] = 1,否则 grumpy[i] = 0。 当书店老板生气时,那一分钟的顾客就会不满意,不生气则他们是满意的。书店老板知道一个秘密技巧,能抑制自己的情绪,可以让自己连续 X分钟不生气,但却只能使用一次。 请你返回这一天营业下来原创 2021-02-23 12:41:18 · 117 阅读 · 0 评论 -
CCF-CSP Python Cheat Sheet
这里写自定义目录标题Python Cheat Sheetstring字符串的运算格式化输出三引号其他ListDictionarySetGraph邻接表形式DFSBFS杂项无向图的联通判断序列中出现最多的元素生成定长0列表二叉树生成和遍历AlgorithmDPBackpack01背包多重背包最长公共子序列DJSTL/floydPRIM/KRUSKAL:最小生成树拓扑排序Python Cheat S...原创 2019-12-15 10:35:48 · 305 阅读 · 0 评论 -
二叉堆/并查集
Written with StackEdit.二叉堆完全二叉树优先从左边开始填充empty或最小元素在根上子树也是堆储存方式一维数组从[1]开始层序排列[k]的左儿子是2k右是[2k+1]操作Delete Minimum删除根最后一个元素代替根元素向下调整:选取当前节点和较小/大儿子(参考是小顶堆还是大)(通过下标定位),如果顺序不对则交换,直到顺序正确停...原创 2019-11-01 17:46:10 · 173 阅读 · 0 评论 -
背包问题的0-1化
Written with StackEdit.Reference:https://leomalik.github.io/01%E8%83%8C%E5%8C%85%E3%80%81%E5%AE%8C%E5%85%A8%E8%83%8C%E5%8C%85%E3%80%81%E5%A4%9A%E9%87%8D%E8%83%8C%E5%8C%85.htmlSee Also: https://www...原创 2019-11-01 10:32:33 · 212 阅读 · 0 评论 -
DP完全背包
Written with StackEdit.特征每件物品不限数量思路转化为0/1背包(?)每个物体尽可能多放(Why?)递推式为:F(i,j)=Max{F(i−1,w−kw[i])+kv[i]},∀kw[i]<wF(i,j)=Max\{F(i-1,w-kw[i])+kv[i]\} ,\forall kw[i]<wF(i,j)=Max{F(i−1,w−kw[i])...原创 2019-10-31 22:48:15 · 135 阅读 · 1 评论 -
DP0-1背包
Written with StackEdit.背包问题的大致特征给定CCC,(wi,vi)(w_i,v_i)(wi,vi)求max∑xivi≤C,xi∈ Intervalmax\sum x_iv_i\leq C,x_i\in\ Intervalmax∑xivi≤C,xi∈ Interval0-1背包问题0-1是最简单的背包问题,这里interval∈{0,...原创 2019-10-31 12:15:35 · 215 阅读 · 0 评论 -
最长不降子序列&导弹拦截问题
Written with StackEdit.问题描述设有一个正整数的序列:????????,????????,…,????????,对于下标????????<????????<…<????????,若有????????????≤????????????≤…≤???????????? ,则称存在一个长度为m的不下降序列。给出序列,求最长不降序列的长度.思路创建数组f[],用f[i]表示长度为i的最长不下降子序列的尾值,那么f[]数组一定是一个有序序列。用变量t表示数组f[]的长度原创 2019-10-27 16:56:55 · 198 阅读 · 0 评论 -
[POJ1163 IN PYTHON] P1216 [IOI1994][USACO1.5]数字三角形 Number Triangles
题目描述观察下面的数字金字塔。写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以走到左下方的点也可以到达右下方的点。 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5在上面的样例中,从7 到 3 到 8 到 7 到 5 的路径产生了最大,=30输入格式第一...原创 2019-10-09 23:55:28 · 318 阅读 · 0 评论 -
[T86671] 出现次数最多的数
题目描述给定n个正整数,找出它们中出现次数最多的数。如果这样的数有多个,请输出其中最小的一个。输入格式输入的第一行只有一个正整数n(1 ≤ n ≤ 1000),表示数字的个数。 输入的第二行有n个整数s1, s2, …, sn (1 ≤ si ≤ 10000, 1 ≤ i ≤ n)。相邻的数用空格分隔。输出格式输出这n个次数中出现次数最多的数。如果这样的数有多个,输出其中最小的一个。...原创 2019-08-03 00:02:57 · 735 阅读 · 0 评论 -
[PHP In Leetcode 7] Reverse Integer
题目Given a 32-bit signed integer, reverse digits of an integer.给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符...原创 2019-03-26 09:25:03 · 222 阅读 · 0 评论 -
[PHP In Leetcode 832] Flipping an Image
题目Given a binary matrix A, we want to flip the image horizontally, then invert it, and return the resulting image.To flip an image horizontally means that each row of the image is reversed. For ex...原创 2019-03-21 19:24:33 · 135 阅读 · 0 评论 -
[PHP In Leetcode 977] 有序数组的平方
问题Given an array of integers A sorted in non-decreasing order, return an array of the squares of each number, also in sorted non-decreasing order.给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。...原创 2019-03-19 23:19:18 · 326 阅读 · 0 评论 -
[PHP in Leetcode 709] To Lower Case
问题Implement function ToLowerCase() that has a string parameter str, and returns the same string in lowercase.实现函数 ToLowerCase(),该函数接收一个字符串参数 str,并将该字符串中的大写字母转换成小写字母,之后返回新的字符串。思路用string函数中的str...原创 2019-03-19 21:59:44 · 173 阅读 · 0 评论 -
[PHP in Leetcode 711] Jewels and Stones
开这个坑呢,主要是为了督促自己学习PHP,并且能尽早进入CTF的实战.虽然说PHP不算难(对于已经掌握一门语言的来说),但如果算法和函数都不熟悉的话啥也干不了.题目You’re given strings J representing the types of stones that are jewels, and S representing the stones you have....原创 2019-03-19 21:42:47 · 266 阅读 · 0 评论