
日程执行计划和实现结果
harkecho
这个作者很懒,什么都没留下…
展开
-
2020-08-20
异或的性质两个数字异或的结果a^b是将 a 和 b 的二进制每一位进行运算,得出的数字。 运算的逻辑是如果同一位的数字相同则为 0,不同则为 1异或的规律任何数和本身异或则为0任何数和 0 异或是本身136 只出现一次的数字 除一个数字出现一次,其他都出现了两次,让我们找到出现一次 的数执行一次全员异或即可def singleNumber(self, nums:List[int]) -> int: single_number = 0 #初始值为0,因为0异或任何数都是任何数本身原创 2020-08-19 22:47:36 · 179 阅读 · 0 评论 -
螺旋矩阵
59. 螺旋矩阵 II给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。示例:输入: 3输出:[[ 1, 2, 3 ],[ 8, 9, 4 ],[ 7, 6, 5 ]]func generateMatrix(_ n: Int) -> [[Int]] { var result = [[Int]](repeating: [Int](repeating: 0, count: n), count: n) v原创 2020-08-19 14:47:41 · 274 阅读 · 0 评论 -
2020-08-19
11. 盛最多水的容器示例:输入:[1,8,6,2,5,4,8,3,7]输出:49方法一:暴力解法 O(n^2)public int maxArea(int[] height) { int maxArea = 0; for (int i = 0; i < height.length - 1; i++) { for (int j = i + 1; j < height.length; j++) { maxArea = Math.max(maxArea, Math.min原创 2020-08-19 09:12:54 · 114 阅读 · 0 评论 -
2020-08-18
9. 回文数判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。方法一;/* 1111 div = 1 1111 / 1 = 1111 >原创 2020-08-18 06:21:34 · 122 阅读 · 0 评论 -
2020-08-17
53. 最大子序和给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。...原创 2020-08-17 07:32:42 · 145 阅读 · 0 评论 -
2020-08-15
4. 寻找两个正序数组的中位数给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出这两个正序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例 1:nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [3, 4]则中位数是 (2 + 3)/2 = 2.5。中位数和两个有序数组的长度之和有关:当两个原创 2020-08-16 11:12:29 · 174 阅读 · 0 评论 -
2020-08-13
3. 无重复字符的最长子串给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列原创 2020-08-13 08:56:16 · 123 阅读 · 0 评论 -
2020-08-10
387. 字符串中的第一个唯一字符剑指 Offer 50. 第一个只出现一次的字符给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。示例:s = “leetcode” 返回 0s = “loveleetcode” 返回 2 func firstUniqChar(_ s: String) -> Character { var table: [Character: Int] = [:] for c i原创 2020-08-10 09:41:49 · 155 阅读 · 0 评论 -
高级字符串算法
72. 编辑距离给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符示例 1:输入:word1 = “horse”, word2 = “ros”输出:3解释:horse -> rorse (将 ‘h’ 替换为 ‘r’)rorse -> rose (删除 ‘r’)rose -> ros (删除 ‘e’)示例 2:输入:word1 = “原创 2020-08-06 07:14:25 · 280 阅读 · 0 评论 -
字符串基础知识和引申题目
Python 中字符串 x = 'abbc’和Java中的String x = “abbc” 是imutable的,好处是线程安全的也就是说当将其加一个字符或者减一个字符其实都是新生成了一个String,原来的String还是原来的内容C++的话,字符串它是可变的在多线程环境string immutable遍历字符串for ch in "abbc": print(ch)String x = "abbc";for (int i = 0; i < x.size(); ++i) { .原创 2020-08-05 07:02:14 · 214 阅读 · 0 评论 -
2020.7.31
146. LRU缓存机制运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果关键字 (key) 存在于缓存中,则获取关键字的值(总是正数),否则返回 -1。写入数据 put(key, value) - 如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组「关键字/值」。当缓存容量达到上限时,它应该在写入新数据之前删除最久未使用的数据值,从而为新的数据值留出空间。原创 2020-07-31 06:31:19 · 131 阅读 · 0 评论 -
2020.7.27
208. 实现 Trie (前缀树)实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作。示例:Trie trie = new Trie();trie.insert(“apple”);trie.search(“apple”); // 返回 truetrie.search(“app”); // 返回 falsetrie.startsWith(“app”); // 返回 truetrie.insert(“app”);trie.原创 2020-07-27 20:17:34 · 143 阅读 · 0 评论 -
DFS, BFS代码模板
DFS代码模板递归写法// Javapublic List<List<Integer>> levelOrder(TreeNode root) { List<List<Integer>> allResults = new ArrayList<>(); if (root == null) { return allResults; } travel(root, 0, results);}public void travel(Tre原创 2020-07-26 06:27:10 · 228 阅读 · 0 评论 -
2020.7.19
1143. 最长公共子序列给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列的长度。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。两个字符串的「公共子序列」是这两个字符串所共同拥有的子序列。若这两个字符串没有公共子序列,则返回 0。示例 1:输入:text1 = “abcde”原创 2020-07-19 09:42:58 · 149 阅读 · 0 评论 -
2020.7.18
120. 三角形最小路径和给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。例如,给定三角形:[[2],[3,4],[6,5,7],[4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。说明:如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题def minmumTotal(self,原创 2020-07-18 07:37:54 · 3640 阅读 · 0 评论 -
2020.7.12
剑指 Offer 29. 顺时针打印矩阵输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例 2:输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7] func spiralOrder(_ matrix: [[Int]]) -> [Int]原创 2020-07-11 22:31:05 · 118 阅读 · 0 评论 -
2020.7.11
剑指 Offer 12. 矩阵中的路径请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。例如,在下面的3×4的矩阵中包含一条字符串“bfce”的路径(路径中的字母用加粗标出)。[[“a”,“b”,“c”,“e”],[“s”,“f”,“c”,“s”],[“a”,“d”,“e”,“e”]]但矩阵中不包含字符串“abfb”的路径,因为字符串原创 2020-07-11 07:50:31 · 217 阅读 · 0 评论 -
2020.7.10
剑指 Offer 07. 重建二叉树输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如,给出前序遍历 preorder = [3, 9, 20, 15, 7]中序遍历 inorder = [9, 3, 15, 20, 7]返回如下的二叉树:3/ 9 20/ 15 7方法一:递归二叉树的前序遍历顺序是:根节点、左子树、右子树,每个子树的遍历顺序同样满足前序遍历顺序。二叉树的中序遍历顺序是:左子树、根节点、右原创 2020-07-10 07:21:11 · 122 阅读 · 0 评论 -
2020.7.9
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-07-09 09:56:17 · 201 阅读 · 0 评论 -
2020.7.5
应用实例 零钱兑换322 零钱兑换给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。示例 1: 输入: coins = [1, 2, 5], amount = 11输出: 3解释: 11 = 5 + 5 + 1示例 2: 输入: coins = [2], amount = 3输出: -1说明: 你可以认为每种硬币的数量是无限的。1.stride(through: 5, by:原创 2020-07-05 09:15:20 · 142 阅读 · 0 评论 -
2020.7.4
Review121. 买卖股票的最佳时机方法一:暴力法: 时间复杂度O(n^2), 空间复杂度O(1)给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意:你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不原创 2020-07-04 21:02:01 · 133 阅读 · 0 评论 -
2020.7.3
Priority322 零钱兑换给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。示例 1:输入: coins = [1, 2, 5], amount = 11输出: 3解释: 11 = 5 + 5 + 1示例 2:输入: coins = [2], amount = 3输出: -1说明:你可以认为每种硬币的数量是无限的方法一:暴力递归# 伪代码框架def coin原创 2020-07-03 11:16:42 · 259 阅读 · 0 评论 -
2020.7.2
Priority121. 买卖股票的最佳时机给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意:你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你原创 2020-07-02 06:55:35 · 265 阅读 · 0 评论 -
2020.7.1
Priority153. 寻找旋转排序数组中的最小值方法一: 思想: 看旋转发生在前半部分,还是后半部分,如果旋转发生在前半部分,找到的规律就是 7 0 1 2 4 5 6那么有nums[mid - 1] > nums[mid]; return nums[mid]; 判断的条件nums[mid] < nums[0] right = mid - 1如果旋转发生在后半部分, 找到的规律就是4, 5, 6, 7, 0, 1 , 2那么有nums[mid] > nums原创 2020-07-01 17:43:54 · 139 阅读 · 0 评论