随笔分类 -  leetcode

摘要:题目 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 示例: 输入: [1,2,3,4,5,6,7] 和 k = 3 输出: [5,6,7,1,2,3,4] 解题思路 假设 我们现在数组为[1,2,3,4,5,6,7], l=7 且 k=3 。 如下图可以看到5,6,7 被移 阅读全文
posted @ 2021-06-02 10:20 small_lei_it 阅读(44) 评论(0) 推荐(0)
摘要:题目 给定一组字符,使用原地算法将其压缩。 压缩后的长度必须始终小于或等于原数组长度。 数组的每个元素应该是长度为1 的字符(不是 int 整数类型)。 在完成原地修改输入数组后,返回数组的新长度。 解题思路 方法一:双指针 直觉: 我们使用两个指针 read 和 write 分别标记读和写的位置。 阅读全文
posted @ 2021-03-10 16:43 small_lei_it 阅读(406) 评论(0) 推荐(0)
摘要:package main import "fmt" func slide_windows(customer []int, grumpy []int, k int) int { n := len(grumpy) var total int for i := 0; i < n; i++ { if gru 阅读全文
posted @ 2021-02-24 09:31 small_lei_it 阅读(76) 评论(0) 推荐(0)
摘要:题目: 给定一个由若干 0 和 1 组成的数组 A,我们最多可以将 K 个值从 0 变成 1 。 返回仅包含 1 的最长(连续)子数组的长度。 解题思路 重点: 题意转换。把「最多可以把 K 个 0 变成 1,求仅包含 1 的最长子数组的长度」转换为 「找出一个最长的子数组,该子数组内最多允许有 K 阅读全文
posted @ 2021-02-20 10:20 small_lei_it 阅读(80) 评论(0) 推荐(0)
摘要:题目 运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。 实现 LRUCache 类: LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓存中,则返回关键字 阅读全文
posted @ 2021-01-13 15:07 small_lei_it 阅读(113) 评论(0) 推荐(0)
摘要:题目 两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。 给出两个整数 x 和 y,计算它们之间的汉明距离。 示例: 输入: x = 1, y = 4 输出: 2 解释: 1 (0 0 0 1) 4 (0 1 0 0) ↑ ↑ 上面的箭头指出了对应二进制位不同的位置。 解题思路 布 阅读全文
posted @ 2021-01-12 10:03 small_lei_it 阅读(183) 评论(0) 推荐(0)
摘要:题目 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回滑动窗口中的最大值。 示例 1: 输入:nums = [1,3,-1,-3,5,3,6,7], k = 3 输出:[3,3,5,5 阅读全文
posted @ 2021-01-11 15:02 small_lei_it 阅读(205) 评论(0) 推荐(0)
摘要:题目 输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5] 解题思路 考虑设定矩阵的“左、上、右、下”四个边界,模拟以上矩阵遍历顺序 算法流程: 空值处理: 当 matrix 为空时,直接返回空列表 [] 即可。 1.初始化: 矩阵 阅读全文
posted @ 2020-12-22 10:15 small_lei_it 阅读(123) 评论(0) 推荐(0)
摘要:题目 给定一个非负整数 N,找出小于或等于 N 的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增。 (当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单调递增的。) 输入: n=332, 输出 299 解题思路 贪心思路①.要使目标数字和 N 最接近, 阅读全文
posted @ 2020-12-15 10:13 small_lei_it 阅读(166) 评论(0) 推荐(0)
摘要:题目 给定一个 row x col 的二维网格地图 grid ,其中:grid[i][j] = 1 表示陆地, grid[i][j] = 0 表示水域。 网格中的格子 水平和垂直 方向相连(对角线方向不相连)。整个网格被水完全包围,但其中恰好有一个岛屿(或者说,一个或多个表示陆地的格子相连组成的岛屿 阅读全文
posted @ 2020-12-04 10:00 small_lei_it 阅读(222) 评论(0) 推荐(0)
摘要:题目 给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边均被水包围。 输入:grid = [ ["1","1","1","1","0"], ["1", 阅读全文
posted @ 2020-12-03 10:06 small_lei_it 阅读(134) 评论(0) 推荐(0)
摘要:题目 给定一个经过编码的字符串,返回它解码后的字符串。 编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。 你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。 此 阅读全文
posted @ 2020-12-02 11:14 small_lei_it 阅读(432) 评论(0) 推荐(0)
摘要:题目 给定一个链表,返回链表开始入环的第一个节点。如果链表无环,则返回 null。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。 说明: 阅读全文
posted @ 2020-12-02 10:13 small_lei_it 阅读(94) 评论(0) 推荐(0)
摘要:题目 给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 进阶: 你可以不使用代码库中的排序函数来解决这道题吗?你能想出一个仅使用常数空间的一趟扫描算法 阅读全文
posted @ 2020-11-30 10:18 small_lei_it 阅读(218) 评论(0) 推荐(0)
摘要:题目 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例1: 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 解题思路 滑动窗口+Map 代码 package main import "fmt" func No 阅读全文
posted @ 2020-11-27 16:33 small_lei_it 阅读(97) 评论(0) 推荐(0)
摘要:题目 给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。 示例 1: 输入: n = 12 输出: 3 解释: 12 = 4 + 4 + 4. 示例 2: 输入: n = 13 输出: 2 解释: 13 = 4 阅读全文
posted @ 2020-11-27 14:08 small_lei_it 阅读(277) 评论(0) 推荐(0)
摘要:题目 给定一个非空的整数数组,返回其中出现频率前 k 高的元素。 示例 1: 输入: nums = [1,1,1,2,2,3], k = 2 输出: [1,2] 示例 2: 输入: nums = [1], k = 1 输出: [1] 提示: 你可以假设给定的 k 总是合理的,且 1 ≤ k ≤ 数组 阅读全文
posted @ 2020-11-26 16:30 small_lei_it 阅读(123) 评论(0) 推荐(0)
摘要:题目 给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。 示例: 输入: ["eat", "tea", "tan", "ate", "nat", "bat"] 输出: [ ["ate","eat","tea"], ["nat","tan"], ["bat"] ] 阅读全文
posted @ 2020-11-25 09:41 small_lei_it 阅读(175) 评论(0) 推荐(0)
摘要:题目 给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 说明:你不能倾斜容器。 示例 1: 输入 阅读全文
posted @ 2020-11-24 10:09 small_lei_it 阅读(138) 评论(0) 推荐(0)
摘要:题目: 实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作。 Trie trie = new Trie(); trie.insert("apple"); trie.search("apple"); // 返回 true trie.search( 阅读全文
posted @ 2020-11-06 17:08 small_lei_it 阅读(109) 评论(0) 推荐(0)