数据结构
liuhehe123
这个作者很懒,什么都没留下…
展开
-
BFS 寻找矩阵中两点之间的最短距离
找指定两坐标间的最短距离这一类 找两点间最短距离的问题一般是使用BFS来解决。题目描述给定一个矩阵,x 为坐标起点,即可以用作出发的地方,T 为终点, 即要到达的地方,那么请给出 从 X 出发能到达 T 的最短的路径长度, 以及起点 X 的坐标。输入:矩阵地图5 6X0010000000X01T0000X101000000X输出:一行是最短的路径距离,接着一行是起始点 X 的坐标。40 0 1 5思路考虑 BFS再说一次,广度优先搜索可回答两类问题。 第一类问题:从原创 2020-09-26 23:55:12 · 2017 阅读 · 0 评论 -
CM8-反转子串
反转子串题目描述给定2个字符串s1和s2,请判断s2是否为s1旋转而成,返回bool值。字符串中字符为英文字母和空格,区分大小写,字符串长度小于等于1000。测试样例:“Hello world”,"worldhello "返回:false“waterbottle”,“erbottlewat”返回:true思路判断 s2 是否为 s1 的旋转, 可以考虑 String s = s1+s1, 然后 判断 s1 是否包含 s2。如果包含返回true, 如果遍历完都没有找到,返回false。原创 2020-09-24 11:19:38 · 271 阅读 · 0 评论 -
CM5-基本字符串压缩
基本字符串压缩题目描述现给定一个string iniString字符串(长度小于等于10000),请按连续重复字母压缩的方式将该字符串压缩,返回结果为string,比如,字符串“aabbcccccaaa”经压缩会变成“a2b2c5a3”,若压缩后的字符串没有变短,则返回原先的字符串。注意保证串内字符均由大小写英文字母组成。测试样例“aabcccccaaa”返回:“a2b1c5a3”“welcometonowcoderrrrr”返回:“welcometonowcoderrrrr”思路考原创 2020-09-24 10:56:33 · 317 阅读 · 0 评论 -
CM3 确定两串乱序同构
题目描述给定string stringA和string stringB,编写程序确认两字符串包含的字符是否完全相同,注意大小写为不同字符,且考虑字符串中的空格,返回一个bool,代表两串是否由一样的字符组成。保证两串的长度都小于等于5000。测试样例:“This is nowcoder”,“is This nowcoder”返回:true“Here you are”,“Are you here”返回:false思路一、 使用两个 256 长度数组 map1,map2 进行比较, 然后比原创 2020-09-24 10:28:58 · 142 阅读 · 0 评论 -
LeetCode 581 最短无序连续子数组
LeetCode 581 最短无序连续子数组581. 最短无序连续子数组难度简单288给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。你找到的子数组应是最短的,请输出它的长度。示例 1:输入: [2, 6, 4, 8, 10, 9, 15]输出: 5解释: 你只需要对 [6, 4, 8, 10, 9] 进行升序排序,那么整个...原创 2020-05-04 12:10:14 · 305 阅读 · 0 评论 -
LeetCode 560 和为 k 的子数组
LeetCode 560 和为 k 的子数组560. 和为K的子数组难度中等307给定一个整数数组和一个整数 **k,**你需要找到该数组中和为 k 的连续的子数组的个数。示例 1 :输入:nums = [1,1,1], k = 2输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。说明 :数组的长度为 [1, 20,000]。数组中元素的范围是 [-1000, 1...原创 2020-05-04 11:59:20 · 179 阅读 · 0 评论 -
LeetCode 148:排序链表 【归并】
148. 排序链表难度中等512在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。示例 1:输入: 4->2->1->3输出: 1->2->3->4示例 2:输入: -1->5->3->4->0输出: -1->0->3->4->5思路使用归并排序递归版本 则需要 O...原创 2020-04-30 11:56:08 · 130 阅读 · 0 评论 -
LeetCode 56 : 合并区间 【排序/贪心】
LeetCode 56 合并区间56. 合并区间难度中等401给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: [[1,4],[4,5]]输出: [[1,5]]解释...原创 2020-04-30 11:16:50 · 227 阅读 · 0 评论 -
LeetCode 621 : 任务调度器 【贪心算法】
621. 任务调度器难度中等256给定一个用字符数组表示的 CPU 需要执行的任务列表。其中包含使用大写的 A - Z 字母表示的26 种不同种类的任务。任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完。CPU 在任何一个单位时间内都可以执行一个任务,或者在待命状态。然而,两个相同种类的任务之间必须有长度为 n 的冷却时间,因此至少有连续 n 个单位时间内 CPU 在执行...原创 2020-04-30 10:54:06 · 759 阅读 · 0 评论 -
LeetCode 406 : 根据身高重建队列 【贪心】
406. 根据身高重建队列难度中等304假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。注意:总人数少于1100人。示例输入:[[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]]输出:[[5,0], [7,0], [5,2],...原创 2020-04-29 12:10:55 · 266 阅读 · 0 评论 -
LeetCode 55跳跃游戏 【动态规划 + 贪心】
55. 跳跃游戏难度中等631给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。示例 2:输入: [3,2,1,0,4]输出: fa...原创 2020-04-29 11:57:55 · 454 阅读 · 0 评论 -
LeetCode 142 环形链表 II【双指针】
142. 环形链表 II难度中等451给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。说明: 不允许修改给定的链表。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connec...原创 2020-04-27 11:24:51 · 165 阅读 · 0 评论 -
LeetCode 141 环形链表【双指针】
141. 环形链表难度简单573给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head = [1,2]...原创 2020-04-27 11:23:44 · 157 阅读 · 0 评论 -
LeetCode 394 字符串解码【使用双栈】
LeetCode 394 字符串解码394. 字符串解码难度中等252给定一个经过编码的字符串,返回它解码后的字符串。编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数...原创 2020-04-26 14:44:53 · 243 阅读 · 0 评论 -
leetcode 84 柱状图中最大的矩形
84. 柱状图中最大的矩形难度困难551给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]。图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10 个单位。示例:输入: [2,1,5,6,2,3]输出: 10...原创 2020-04-26 14:02:32 · 202 阅读 · 0 评论 -
LeetCode 42 接雨水双指针
42. 接雨水难度【困难】1170给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。示例:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6解...原创 2020-04-26 10:14:45 · 209 阅读 · 0 评论 -
leetcode42接雨水
42. 接雨水难度【困难】1170给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。示例:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6解...原创 2020-04-26 10:11:28 · 221 阅读 · 0 评论 -
LeetCode 76 最小覆盖子串 滑动窗口方法
76. 最小覆盖子串难度困难433收藏分享切换为英文关注反馈给你一个字符串 S、一个字符串 T,请在字符串 S 里面找出:包含 T 所有字母的最小子串。示例:输入: S = "ADOBECODEBANC", T = "ABC"输出: "BANC"说明:如果 S 中不存这样的子串,则返回空字符串 ""。如果 S 中存在这样的子串,我们保证它是唯一的答案。思路双指针思路问题...原创 2020-04-21 10:59:13 · 197 阅读 · 0 评论 -
leetcode 75 颜色分类
75. 颜色分类难度中等397给定一个包含红色、白色和蓝色,一共 n 个元素的数组,**原地**对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。示例:输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]进阶:一个直观的解决方...原创 2020-04-20 17:53:53 · 151 阅读 · 0 评论 -
leetcode 66 加一
题目描述给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321。...原创 2019-08-19 20:29:51 · 129 阅读 · 0 评论 -
leetcode 88 合并两个有序数组
题目描述给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums...原创 2019-08-21 20:58:29 · 131 阅读 · 0 评论 -
leetcode 53. 最大子序和
问题描述:给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释:连续子数组[4,-1,2,1] 的和最大,为6。进阶: 如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。共用了三种方法:第一种: 暴力求解法 ...原创 2019-08-17 22:25:55 · 168 阅读 · 0 评论 -
leetcode 118 杨辉三角
题目描述给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1]]有两种方案解决第一种借助二维数组来实现, 一般实现最方便的就是二维数组, 下标为 0 和 对角线上元素 ...原创 2019-08-22 21:42:40 · 138 阅读 · 0 评论 -
leetcode 119杨辉三角II java
给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 3输出: [1,3,3,1]由于和118题很相似,就直接套了下118的源代码如下class Solution { public List<Integer> getRow(int rowIndex) { int nu...原创 2019-08-26 21:36:17 · 276 阅读 · 0 评论 -
leetcode 283移动 0 java
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。解题思路:使用双指针法,一个指针 vInd 指向非零值,一个指针zInd指向零,当vInd<=zInd不做交换,且向后移动vInd指针直到大于...原创 2019-08-27 21:40:09 · 150 阅读 · 0 评论 -
处理等深分箱 深度不为整数的处理方法 equi-depth binning
@划分(Binning)遇到处理等深分箱 深度不为整数的处理方法N = [1, 2, 3, 4, 5, 6]bins = 4那么我们划分的深度 就是 depth = N/bins = 1.5>0每个分箱给约1.5,这里其实可以进行拆分将 1 划给第一个分箱 [1], 将剩余的 0.5 给下一个分箱子,这样下一个分箱就有 1.5 + 0.5 = 2 个数可取 ,也就是说 [2,3...原创 2019-05-22 09:09:17 · 6989 阅读 · 0 评论