随笔分类 -  数据结构

数据结构学习记录
摘要:贪心算法:在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,它所做出的仅仅是在某种意义上的局部最优解。 1、分发饼干 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。 对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃 阅读全文
posted @ 2021-04-25 14:56 王余阳 阅读(87) 评论(0) 推荐(0)
摘要:你总共有 n 枚硬币,你需要将它们摆成一个阶梯形状,第 k 行就必须正好有 k 枚硬币。 给定一个数字 n,找出可形成完整阶梯行的总行数。 n 是一个非负整数,并且在32位有符号整型的范围内。 示例 1: n = 5 硬币可排列成以下几行: ¤ ¤ ¤ ¤ ¤ 因为第三行不完整,所以返回2. 示例 阅读全文
posted @ 2021-03-05 20:25 王余阳 阅读(434) 评论(0) 推荐(0)
摘要:最优化原理:指的最优策略具有这样的性质:不论过去状态和决策如何,对前面的决策所形成的状态而言,余下的诸决策必须构成最优策略。简单来说就是一个最优策略的子策略也是必须是最优的,而所有子问题的局部最优解将导致整个问题的全局最优。如果一个问题能满足最优化原理,就称其具有最优子结构性质。 这是判断问题能否使 阅读全文
posted @ 2020-11-07 21:28 王余阳 阅读(253) 评论(0) 推荐(0)
摘要:Calculate a+b and output the sum in standard format -- that is, the digits must be separated into groups of three by commas (unless there are less tha 阅读全文
posted @ 2020-09-22 23:14 王余阳 阅读(220) 评论(0) 推荐(0)
摘要:题目描述: 小A正在学画画,现在,线稿已经画好了,只剩下涂色部分了。但是小A发现,他的颜料不够了。每一块颜料能涂一个色块, 每一个色块的颜色是事先决定好了的。 由于颜料不够,小A只能尽其所能来涂色。 如果一个色块没有了颜料,就不能涂色。现在,给你画中需要的色块颜色,和小A现在手上有的颜料,请你计算小 阅读全文
posted @ 2020-09-21 15:05 王余阳 阅读(373) 评论(0) 推荐(0)
摘要:给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个位置。 示例 1: 输入: [2,3,1,1,4] 输出: true 解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个 阅读全文
posted @ 2020-09-08 16:10 王余阳 阅读(143) 评论(0) 推荐(0)
摘要:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入: [1, 2, 3, 2, 2, 2, 5, 4, 2] 输出: 2 1 class Solution { 2 public int majorityEleme 阅读全文
posted @ 2020-09-08 10:44 王余阳 阅读(187) 评论(0) 推荐(0)
摘要:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 示例 1: 输入: nums = [-1,0,3,5,9,12], target = 9 输出: 4 解释: 9 出现在 num 阅读全文
posted @ 2020-09-07 13:37 王余阳 阅读(163) 评论(0) 推荐(0)
摘要:在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。 示例: s = "abaccdeff" 返回 'b' 示例: s = "" 返回 ' ' 1 class Solution { 2 public char firstUniqChar(String s) { 阅读全文
posted @ 2020-09-05 10:55 王余阳 阅读(128) 评论(0) 推荐(0)
摘要:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。 示例 1: 输入:nums = [2,7,11,15], target = 9 输出:[2,7] 或者 [7,2] 示例 2: 输入:nums = [10,26,30,31, 阅读全文
posted @ 2020-09-05 10:35 王余阳 阅读(140) 评论(0) 推荐(0)
摘要:输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。 要求时间复杂度为O(n)。 示例1: 输入: nums = [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。 解法: 动态规划解析: 状态定 阅读全文
posted @ 2020-09-05 09:18 王余阳 阅读(331) 评论(0) 推荐(0)
摘要:输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。 示例 1: 输入:arr = [3,2,1], k = 2 输出:[1,2] 或者 [2,1] 示例 2: 输入:arr = [0,1,2,1], k = 1 输 阅读全文
posted @ 2020-09-04 22:58 王余阳 阅读(165) 评论(0) 推荐(0)
摘要:给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。 具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。 示例 1: 输入:"abc" 输出:3 解释:三个回文子串: "a", "b", "c" 示例 2: 输入:"aaa" 输出:6 解释:6个回文子串: "a 阅读全文
posted @ 2020-09-02 20:48 王余阳 阅读(201) 评论(0) 推荐(0)
摘要:给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。 示例:二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其层次遍历结果: [ [3], [9,20], [15,7] ] /** * Definition 阅读全文
posted @ 2020-09-01 18:15 王余阳 阅读(257) 评论(0) 推荐(0)
摘要:给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 示例 1: 输入:lists = [[1,4,5],[1,3,4],[2,6]] 输出:[1,1,2,3,4,4,5,6] 解释:链表数组如下: [ 1->4->5, 1->3->4, 2->6 ] 阅读全文
posted @ 2020-08-30 15:59 王余阳 阅读(369) 评论(0) 推荐(0)
摘要:给定两个字符串 s 和 t,判断它们是否是同构的。 如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的。 所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。 示例 1: 输入: s = "egg", t = "add" 输 阅读全文
posted @ 2020-08-27 10:32 王余阳 阅读(607) 评论(0) 推荐(0)
摘要:给定一个 没有重复 数字的序列,返回其所有可能的全排列。 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 1 public void backtrack(int n, 2 ArrayList<I 阅读全文
posted @ 2020-08-26 10:35 王余阳 阅读(214) 评论(0) 推荐(0)
摘要:数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例: 输入:n = 3 输出:[ "((()))", "(()())", "(())()", "()(())", "()()()" ] 深度优先遍历我们以 n = 2 为例,画树形结构图。方法是 “做减 阅读全文
posted @ 2020-08-25 17:24 王余阳 阅读(277) 评论(0) 推荐(0)
摘要:给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 1: 输入: "()" 输出: true 示例 2: 输入: "()[]{} 阅读全文
posted @ 2020-08-25 16:49 王余阳 阅读(148) 评论(0) 推荐(0)
摘要:给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。 示例 1: 给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7 返回 true 示例 2: 给定二叉树 [ 阅读全文
posted @ 2020-08-20 15:19 王余阳 阅读(120) 评论(0) 推荐(0)