- 博客(19)
- 收藏
- 关注
原创 leetcode 5. 最长回文子串
leetcode 5. 最长回文子串解题思路执行用时552ms。基本思路是动态规划算法,对二维数组进行填表定义:i = 左边界j = 右边界dp[i][j] = i到j的子串是否为回文子串由此可得递推公式:dp[i][j] = (dp[i+1][j-1] && s[i] == s[j]) ? true : false初始化二维数组,遍历二维数组的关键点:以列j为基准,对行i进行遍历,并且i < j。j = 0j = 1j = 2j = 3
2021-07-25 18:04:27
129
原创 macOS的私钥签名随笔
MacOS的私钥签名随笔RSA的加密、解密、签名参考Objective-C-RSA把NSString转化成SecKeyRef参考CocoaCryptoMac以下代码引用自iOS和MacOSX上的私钥签名不同- (NSData *)signatureWithKey:(SecKeyRef)keyRef { if (keyRef == NULL) { return nil; } NSData *sha1Digest = [self dataWithSHA1Dig
2021-05-09 19:32:39
269
原创 leetcode 8. 字符串转换整数 (atoi)
leetcode 8. 字符串转换整数 (atoi)题意给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3解题思路用 p 记录当前节点。用 iter 作为迭代器,寻找下一个与 p 不相等的节点,并...
2019-12-05 16:17:56
188
原创 快速排序/快排(Python3)
快排的Python3实现方法A = [-1, 3, -2, 4, -5];def quicksort(A: int, left: int, right: int): if left > right: return; i = left; j = right; x = A[left]; while i < j: ...
2019-09-27 08:44:03
454
原创 寻找数组中第K大的数字-快排解法(Python3)
给定一个数组A,寻找第k大的数字。本质上是查询操作,但是却使用到快排思想(即分治)A = [-1, 3, -2, 4, -5];def partition(A: int, low: int, high: int) -> int: temp = A[low]; while low < high: while low < high and te...
2019-09-26 19:42:33
1481
原创 leetcode 82. 删除排序链表中的重复元素 Ⅱ
leetcode 82. 删除排序链表中的重复元素 Ⅱ题意给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。示例 1:输入: 1->2->3->3->4->4->5输出: 1->2->5示例 2:输入: 1->1->1->2->3输出: 2->3解题思路用 哈希...
2018-12-04 12:54:33
206
原创 leetcode 83. 删除排序链表中的重复元素
leetcode 83. 删除排序链表中的重复元素题意给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3解题思路用 p 记录当前节点。用 iter 作为迭代器,寻找下一个与 p 不相等的节点,并把...
2018-11-27 19:25:19
167
原创 leetcode 78. 集合
leetcode 78. 集合题意给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]解题思路求解全排列的通法,使用回溯和递归的思想。代码class Solution ...
2018-11-20 19:11:43
244
1
原创 leetcode 77. 组合
leetcode 77. 组合题意给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。示例:输入: n = 4, k = 2输出:[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4],]解题思路求解全排列的通法,使用回溯和递归的思想。代码class Solution { public List<List...
2018-11-13 22:44:10
183
原创 leetcode 63. 不同路径 Ⅱ
leetcode 63. 不同路径 Ⅱ题意一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。说明:m 和 n 的值均不超过 100...
2018-11-07 09:30:32
311
原创 leetcode 64. 最小路径和
leetcode 64. 最小路径和题意给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[[1,3,1],[1,5,1],[4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小解题思路使用动态规划的思想,用 path[m][n] 表示m x n...
2018-10-30 18:41:53
341
原创 leetcode 62. 不同路径
leetcode 62. 不同路径题意一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?说明:m 和 n 的值均不超过 100。示例 1:输入: m = 3, n ...
2018-10-25 17:56:42
360
原创 leetcode 50. Pow(x, n)
leetcode 50. Pow(x, n)题意实现 pow(x, n) ,即计算 x 的 n 次幂函数。解题思路使用递归计算x 的 n 次幂,可以避免超时。代码class Solution { public double myPow(double x, int n) { if (n < 0) { return...
2018-10-15 23:36:43
195
原创 leetcode 23. 合并K个排序链表
leetcode 23. 合并K个排序链表题意合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。解题思路先定义mergeTwoLists函数,该函数使用归并排序对 lists1 和 lists2 两个链表进行排序,得到一个新的链表 lists3 。对 lists 中的链表进行两两排序,最终得到一个排好序的链表。代码/** * Definition for s...
2018-10-15 23:11:39
167
原创 leetcode 4. 两个排序数组的中位数
leetcode 4. 两个排序数组的中位数题意给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 。请找出这两个有序数组的中位数。要求算法的时间复杂度为 O(log (m+n)) 。你可以假设 nums1 和 nums2 不同时为空。解题思路使用归并排序把 nums1 和 nums2 两个有序数组结合起来,得到一个有序数组 nums3 。nums3 的中位数即为所...
2018-10-11 12:59:50
173
原创 leetcode 11. 盛最多水的容器
leetcode 11. 盛最多水的容器题意给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8...
2018-10-04 12:02:51
478
原创 leetcode 53. 最大子序和
leetcode 53. 最大子序和题意给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。解题思路以nums数组的每一个元素作为子数组的起始元素,计算所有可能的子数组的和,并找到最大和,即为所求。代码class Solution { public int maxSubArray(int[] nums) { ...
2018-09-30 07:14:52
156
原创 leetcode 3. 无重复字符的最长子串
leetcode 3. 无重复字符的最长子串####题意给定一个字符串,找出不含有重复字符的最长子串的长度。####解题思路先建立一个临时String为temp,然后遍历字符串,把字符串中的字母加到temp中,作为temp的第一个字母。从当前字母的下一个字母开始遍历字符串,判断每一个字母是否已经存在于temp中,如果不存在,则添加到temp中,继续遍历下一个字母,如果存在则终止该循环,...
2018-09-20 20:44:30
193
原创 leetcode 2. 两数相加
leetcode 2. 两数相加题意给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。解题思路先建立一个表头(该表头只是为了方便添加数字,真正的数字从表头的下一个节点开始),然后同时遍历两个链表,并用carry表示是否进位。因此,每一位的数字都可以用l1.val + l2.val + carry表示。...
2018-09-15 09:04:51
166
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人