09 2021 档案
摘要:给定一个字符串 s 和一个整数 k,你需要对从字符串开头算起的每隔 2k 个字符的前 k 个字符进行反转。 如果剩余字符少于 k 个,则将剩余字符全部反转。 如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。 示例: 输入: s = "abcdefg", k =
阅读全文
posted @ 2021-09-26 23:42
sherry001
摘要:编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。 示例 1: 输入:["h","e","l
阅读全文
posted @ 2021-09-26 22:29
sherry001
摘要:题意:给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。 注意: 答案中不可以包含重复的四元组。 示例: 给定数组 nums
阅读全文
posted @ 2021-09-26 08:43
sherry001
摘要:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。 注意: 答案中不可以包含重复的三元组。 示例: 给定数组 nums = [-1, 0, 1, 2, -1, -4], 满足要求的三元
阅读全文
posted @ 2021-09-25 23:10
sherry001
摘要:给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串,判断第一个字符串 ransom 能不能由第二个字符串 magazines 里面的字符构成。如果可以构成,返回 true ;否则返回 false。 (题目说明:为了不暴露赎金信字迹,要从杂志上搜索各个需要的字母,组成单词来表
阅读全文
posted @ 2021-09-25 22:00
sherry001
摘要:给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。 为了使问题简单化,所有的 A, B, C, D 具有相同的长度 N,且 0 ≤ N ≤ 500 。所有整数的范围在 -2^28
阅读全文
posted @ 2021-09-25 21:46
sherry001
摘要:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0
阅读全文
posted @ 2021-09-25 18:11
sherry001
摘要:编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。 如果 n 是快乐数就返回 True ;不是,则返回 Fa
阅读全文
posted @ 2021-09-25 17:47
sherry001
摘要:给定两个数组,编写一个函数来计算它们的交集。 示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2]示例 2: 输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[9,4] class Solution { public in
阅读全文
posted @ 2021-09-25 16:56
sherry001
摘要:给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 示例 1: 输入: s = "anagram", t = "nagaram" 输出: true 示例 2: 输入: s = "rat", t = "car" 输出: false 说明: 你可以假设字符串只包含小写字母。
阅读全文
posted @ 2021-09-25 08:13
sherry001
摘要:给定两个单词 word1 和 word2,找到使得 word1 和 word2 相同所需的最小步数,每步可以删除任意一个字符串中的一个字符。 示例: 输入: "sea", "eat"输出: 2 解释: 第一步将"sea"变为"ea",第二步将"eat"变为"ea" 思路 这次是两个字符串可以相互删了
阅读全文
posted @ 2021-09-24 16:26
sherry001
摘要:给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数。 字符串的一个 子序列 是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。 (例如,"ACE" 是 "ABCDE" 的一个子序列,而 "AEC" 不是) 题目数据保证答案符合 32 位带符号
阅读全文
posted @ 2021-09-24 16:22
sherry001
摘要:给定字符串 s 和 t ,判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。 示例 1: 输入:s = "abc", t = "ahbgdc" 输出:
阅读全文
posted @ 2021-09-24 16:15
sherry001
摘要:给定一个未经排序的整数数组,找到最长且 连续递增的子序列,并返回该序列的长度。 连续递增的子序列 可以由两个下标 l 和 r(l < r)确定,如果对于每个 l <= i < r,都有 nums[i] < nums[i + 1] , 那么子序列 [nums[l], nums[l + 1], ...,
阅读全文
posted @ 2021-09-24 15:10
sherry001
摘要:给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 你的目标是使用最少的跳跃次数到达数组的最后一个位置。 示例: 输入: [2,3,1,1,4] 输出: 2 解释: 跳到最后一个位置的最小跳跃数是 2。从下标为 0 跳到下标为 1 的位置,跳 1
阅读全文
posted @ 2021-09-21 22:27
sherry001
摘要:给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个位置。 示例 1: 输入: [2,3,1,1,4] 输出: true 解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个
阅读全文
posted @ 2021-09-21 21:54
sherry001
摘要:给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 示例 1: 输入: [7,1,5,3,6,4] 输出: 7 解释: 在第
阅读全文
posted @ 2021-09-21 21:02
sherry001
摘要:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6 贪心贪的是哪里呢? 如果 -2 1 在一起,计算起点的时候,
阅读全文
posted @ 2021-09-21 20:45
sherry001
摘要:如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列。第一个差(如果存在的话)可能是正数或负数。少于两个元素的序列也是摆动序列。 例如, [1,7,4,9,2,5] 是一个摆动序列,因为差值 (6,-3,5,-7,3) 是正负交替出现的。相反, [1,4,7,2,5] 和 [1,7
阅读全文
posted @ 2021-09-21 20:32
sherry001
摘要:假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。 对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸; 并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会
阅读全文
posted @ 2021-09-21 16:25
sherry001
摘要:给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。 示例 1: 输入:nums = [1,1,2] 输出: [[1,1,2], [1,2,1], [2,1,1]] 示例 2: 输入:nums = [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2
阅读全文
posted @ 2021-09-21 15:16
sherry001
摘要:给定一个 没有重复 数字的序列,返回其所有可能的全排列。 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 思路 排列问题: 以[1,2,3]为例,抽象成树形结构如下: 回溯三部曲 递归函数参数
阅读全文
posted @ 2021-09-21 14:54
sherry001
摘要:给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2。 示例: 输入: [4, 6, 7, 7] 输出: [[4, 6], [4, 7], [4, 6, 7], [4, 6, 7, 7], [6, 7], [6, 7, 7], [7,7], [4,7,7]] 说明: 给
阅读全文
posted @ 2021-09-21 10:31
sherry001
摘要:给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。 示例: 输入: [1,2,2] 输出: [ [2], [1], [1,2,2], [2,2], [1,2], [] ] 思路 做本题之前一定要先做78.子集 (opens new win
阅读全文
posted @ 2021-09-21 10:16
sherry001
摘要:给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。 示例: 输入: nums = [1,2,3] 输出: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ] class Solution {
阅读全文
posted @ 2021-09-21 09:37
sherry001
摘要:给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。 有效的 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 '.' 分隔。 例如:"0.1.2.201" 和 "192.168.1.1" 是 有效的 IP 地址,但是 "0.011
阅读全文
posted @ 2021-09-20 23:51
sherry001
摘要:给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。 返回 s 所有可能的分割方案。 示例: 输入: "aab" 输出: [ ["aa","b"], ["a","a","b"] ] class Solution { List<List<String>> ans=new ArrayLis
阅读全文
posted @ 2021-09-20 10:06
sherry001
摘要:给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用一次。 说明: 所有数字(包括目标数)都是正整数。 解集不能包含重复的组合。 示例 1: 输入: cand
阅读全文
posted @ 2021-09-20 08:13
sherry001
摘要:给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的数字可以无限制重复被选取。 说明: 所有数字(包括 target)都是正整数。 解集不能包含重复的组合。 示例 1: 输入
阅读全文
posted @ 2021-09-20 07:51
sherry001
摘要:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例: 输入:"23" 输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]. 说明:尽管上面的答
阅读全文
posted @ 2021-09-19 22:53
sherry001
摘要:找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。 说明: 所有数字都是正整数。解集不能包含重复的组合。 示例 1: 输入: k = 3, n = 7输出: [[1,2,4]]示例 2: 输入: k = 3, n = 9输出: [[1
阅读全文
posted @ 2021-09-19 21:46
sherry001
摘要:给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1: 输入:n = 4, k = 2输出:[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], class Solution { List<Lis
阅读全文
posted @ 2021-09-19 15:23
sherry001
摘要:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 示例: 输入: [0,1,0,3,12]输出: [1,3,12,0,0] 双指针:交换 public void moveZeroes1(int[] nums){ if(nums==null || nums
阅读全文
posted @ 2021-09-19 06:46
sherry001
摘要:给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 双指针法:快慢指针 public int removeDuplicates(int[]
阅读全文
posted @ 2021-09-18 23:59
sherry001
摘要:给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 头尾双指针,不会保证原始顺序 publ
阅读全文
posted @ 2021-09-18 23:46
sherry001
摘要:有n1+n2种面值的硬币,其中前n1种为普通币,可以取任意枚,后n2种为纪念币, 每种最多只能取一枚,每种硬币有一个面值,问能用多少种方法拼出m的面值? 输入描述: 第一行输入三个整数n1,n2,m n1,n2<=1000 m<=100000 第二行输入n1个整数表示普通币的面值 第三行输入n2个整
阅读全文
posted @ 2021-09-15 15:40
sherry001
摘要:给你两个数组:一个是怪兽能力数组,一个是钱的数组(获取怪兽的能力要的钱) 6 9 3。。。 3 5 100。。。 只能通过用钱才能买到这个怪兽的能力,开始的能力是0 只能通过贿赂怪兽才能累加这个怪兽的能力, 目标是来到0-N-1号怪兽并且通关,最少花多少钱? 如何通关?当你来到i号怪兽时如果你累加的
阅读全文
posted @ 2021-09-12 13:06
sherry001
摘要:从左往右尝试的模型:背包问题 样本一个作行一个作列的模型:字符串是否交错字符串是否交错: 这个是一个做行,一个做列的模型str1 1 2 3 4 str2 a b c d aim a 1 2 3 b c 4 d 1 2 3 a b c d 4 以上都是str1,str2的交错组成 判段aim是否st
阅读全文
posted @ 2021-09-11 17:22
sherry001
摘要:轨迹碰撞:给你一个数组,只能从右上左下走,如果能撞上返回true 否则返回false 右上左下 3 4 2 1 1 0 1 2 3 4 分析: 0位置会不会撞上?不会,和谁撞呢 1位置会不会撞上?不会,它和0位置是垂直的,和谁撞呢 2位置会不会撞上?不会,它和0位置是平行的,只是方向相反 if(ar
阅读全文
posted @ 2021-09-11 13:33
sherry001
摘要:以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。 示例 1: 输入:intervals = [[1,3],[2,6],[8,10],[
阅读全文
posted @ 2021-09-11 08:45
sherry001
摘要:给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 进阶:你能尝试使用一趟扫描实现吗? 输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]示例 2: 输入:head = [1], n = 1输出:[]示例 3: 输入:head = [1,2], n =
阅读全文
posted @ 2021-09-11 00:24
sherry001
摘要:先看一下两数之和的解: 给一个有序数组,返回组成和为指定值的元组 public static void main(String[] args) { int[] arr={2, 2 ,4, 5 ,9 ,10 ,12}; getPair(arr,14); } public static void get
阅读全文
posted @ 2021-09-10 22:42
sherry001
摘要:给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 说明:你不能倾斜容器。 输入:[1,8,6,2
阅读全文
posted @ 2021-09-10 21:07
sherry001
摘要:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 示例 1: 输入:root = [3,5,1,6,2
阅读全文
posted @ 2021-09-05 16:33
sherry001
摘要:3个字符串str1,str2,-->aim 这个是一个做行,一个做列的模型str1 1 2 3 4 str2 a b c d aim a 1 2 3 b c 4 d 1 2 3 a b c d 4 以上都是str1,str2的交错组成 判段aim是否str1,str2的交错组成 1、先判段长度是否是
阅读全文
posted @ 2021-09-05 16:32
sherry001
摘要:/** * * @param n 总共N个位置 1~n * @param index 从index位置开始 * @param k 走k步 * @param p 目标 * @return 从index位置开始走k步到达p的方法数 */ public static int getWalkWays(int
阅读全文
posted @ 2021-09-05 16:31
sherry001
摘要:public class MoneyWays { /** * 面值为:3,5,7,1 f * 每个面值可以用无数张 * 100 * 从左往右尝试 * f(index,res) * 0张3元的 f(index+1,res)+ * 1张3元的 f(index+1,res-3*1)+ * 33......
阅读全文
posted @ 2021-09-05 16:29
sherry001
摘要:public static int getWin(int[] arr){ return Math.max(f(arr,0,arr.length-1),s(arr,0,arr.length-1)); } public static int f(int[] arr,int l,int r){ //只有一
阅读全文
posted @ 2021-09-05 16:25
sherry001
摘要:假如数组中无重复值 准备一个栈:保证栈是单调递增的, 3->1要入栈,但是不满单调递增了,没法直接入栈,栈要开始弹出,直到1可以进来当一个位置开始从栈里弹出的时候,开始收集它的位置比如2->7要弹出了,那么有关2位置的7,左右侧离它最近的比它小的开始生成左侧离它最近的比它小的是1->6(它底下压的谁
阅读全文
posted @ 2021-09-05 16:03
sherry001
摘要:窗口:是一种运动轨迹,一种运动策略 L,R:可以选择让L往右,或让R往右,但L不能越过R 3,2,1,5,6,5,6,7,2,3,7 0 1 2 3 4 5 6 7 8 9 10 L R R R R 3 2 1 5 L 2 1 5 R 你可以根据你自己的策略让L或R往右动,但是不要违反L<=R 每一
阅读全文
posted @ 2021-09-05 11:23
sherry001
摘要:111->AK,KA,AAA 从左往右尝试的模型 char[],i 从i开始尝试 i=1 ->A 可以当一个,也可以当两个,但要排除0 i=2时可以当一个,也可以当两个,但第二个要<=6eg: 1 1 1 0 1 2拿1个位置去转 拿两个位置去转 同时判断拿1个位置或两个位置去转时是否是有效的,这个
阅读全文
posted @ 2021-09-04 19:58
sherry001
摘要:要求不要出现重复的排列a a c思路:有重复字符的话在做选择时要去掉相同的字符选择第一个字符有两种选择(a,c)第二个字符也有两种选择(a,c)第三个字符只有一种选择 public static List<String> getAllC(String s){ //准备收集的结果集 List<Stri
阅读全文
posted @ 2021-09-04 17:08
sherry001
摘要:全排列第一个字符有三种选择(a,b,c)第二个字符有两种选择,因为前面选过的字符不能再用第三个字符只有一种选择这个也是从左往右尝试的模型eg:a b c排列过程1:a b c2:a c b3:b a c4:b c a5:c a b6:c b a public static List<String>
阅读全文
posted @ 2021-09-04 16:26
sherry001
摘要:有N件物品和一个最多能被重量为W 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。 /** * 0-1背包问题 * @param w w[index] 当前货物的总重量 * @param v v[index]
阅读全文
posted @ 2021-09-04 13:55
sherry001
摘要:获取字符串的所有子序列 子序列:字符的相对位置不变,但可以选要与不要 打印所有子序列:从左往右依次的尝试模型 从第一个字符开始做决定,选择要与不要 eg: a b c 0 1 2 0: 要a,不要a1:要b ,不要b 2:要c ,不要c"",a,ab,ac,abc,b,bc,c暴力递归: publi
阅读全文
posted @ 2021-09-04 13:45
sherry001
摘要:在经典汉诺塔问题中,有 3 根柱子及 N 个不同大小的穿孔圆盘,盘子可以滑入任意一根柱子。一开始,所有盘子自上而下按升序依次套在第一根柱子上(即每一个盘子只能放在更大的盘子上面)。移动圆盘时受到以下限制:(1) 每次只能移动一个盘子;(2) 盘子只能从柱子顶端滑出移到下一根柱子;(3) 盘子只能叠在
阅读全文
posted @ 2021-09-04 11:52
sherry001
摘要:编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 示例 1: 输入:strs = ["flower","flow","flight"]输出:"fl"示例 2: 输入:strs = ["dog","racecar","car"]输出:""解释:输入不存在公共前缀
阅读全文
posted @ 2021-09-04 08:42
sherry001
摘要:给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。 在构造过程中,请注意区分大小写。比如 "Aa" 不能当做一个回文字符串。 注意:假设字符串的长度不会超过 1010。 示例 1: 输入:"abccccdd" 输出:7 解释:我们可以构造的最长的回文串是"dccaccd"
阅读全文
posted @ 2021-09-04 08:07
sherry001
摘要:Manachert算法: 求一个字符串串最长的回文子串 122131221暴力法:每个字符都当作是中心字符,向两边扩,找到所有的 a121bcb121ckf 113 但是这外求法有一个问题如果回文是even是找不到的 122131221 1221就找不到了,因为没法找到虚轴 所以要做以下处理 #1#
阅读全文
posted @ 2021-09-03 23:01
sherry001
摘要:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 示例 1: 输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums
阅读全文
posted @ 2021-09-03 11:39
sherry001
摘要:二分法:求左边的最大值,求右边的最大值整体的最大值,Math.max(leftMax,rightMax); public static int process(int[] arr,int L,int R){ if(L==R){ return arr[L]; } int M=L+((R-L)>>1);
阅读全文
posted @ 2021-09-03 11:13
sherry001
摘要:给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 示例 1: 输入:head = [1,2,2,1]输出:true示例 2: 输入:head = [1,2]输出:false 解法一:用Stack来实现,先依次进栈,再出栈时依次比较
阅读全文
posted @ 2021-09-03 10:54
sherry001
摘要:给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 示例 1: 输入:nums1 = [1,3], nums2 = [2]输出:2.00000解释:合并数组 = [1,2,3] ,中位数 2示例 2: 输入:nums1 =
阅读全文
posted @ 2021-09-02 22:57
sherry001
摘要:给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true ;否则,返回 false 。 二叉树 tree 的一棵子树包括 tree 的某个节点和这个节点的所有后代节点。tree 也可以看做它自身的一棵子树。 解
阅读全文
posted @ 2021-09-02 22:33
sherry001
摘要:序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。 请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列
阅读全文
posted @ 2021-09-02 18:28
sherry001
摘要:如何判段是否一个完全二叉树宽度优先遍历条件:1、不能有右无左,2、遇到孩子不双全的节点,接下来遇到的节点必是叶子节点 public static boolean isCBT(TreeNode head){ if(head==null){ return true; } Queue<TreeNode>
阅读全文
posted @ 2021-09-02 17:30
sherry001
摘要:可以有两种方式来实现: 前缀树 HashMap public static void main(String[] args) { String[] listStr={"k","ab","a","kie","kit","kitt","kittty"}; HashMap<String,Integer>
阅读全文
posted @ 2021-09-02 17:14
sherry001
摘要:字典树 贪心问题:可以做为贪心的一个策略 前缀树:可以求以ab做为前缀的有几个, 有没有加过个单词 解决的问题:可以知道以什么作为前缀的有几个,而hashMap只能解决整理个单词加入过几次,统计不了前缀的数量 public class TrieTree { public static class T
阅读全文
posted @ 2021-09-02 17:02
sherry001
摘要:满二叉树信息: 高度是H,节点数是N条件: n=2^h-1 public static boolean isFull(TreeNode head){ Info info=process(head); int n=info.nodes; int h=info.height; // n=2^h-1 re
阅读全文
posted @ 2021-09-02 17:01
sherry001
摘要:给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 平衡二叉树:左右子树高度差不大于1条件:左子树是平衡树,右子树是平衡树,左右子树的高度差不高于1信息:是否平衡,高度 class Solution {
阅读全文
posted @ 2021-09-02 17:01
sherry001
摘要:给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。 递归方式: 是否是搜索二叉树一、 列可能性: 条件1:左子树是搜索树 条件2:右子树整体是搜索二叉
阅读全文
posted @ 2021-09-02 17:00
sherry001
摘要:层遍历:当前节点入队,弹出并打印,左右子节点入队 public static void leveOrder(TreeNode head){ if(head==null){ return; } Queue<TreeNode> queue=new LinkedList<>(); queue.add(he
阅读全文
posted @ 2021-09-02 16:59
sherry001
摘要:Morris遍历细节:假设cur来到当前节点,cur从头节点开始 1、cur没有左孩子,cur向右移动 2、cur有左孩子,找到左孩子的最右孩子 a:如果右孩子的右指针为空,则让右指针指向当前节点,当前节点向左移动,回到1;(表示第一次到这个节点) b:如果右孩子的右指针指向当前节点,让右指针指向n
阅读全文
posted @ 2021-09-02 12:40
sherry001
摘要:给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。 说明: 当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。 对于本题而言,当 need
阅读全文
posted @ 2021-09-01 22:51
sherry001
摘要:kmp:str1.indexOf(str2); 检查字符串2是1的子序列,并返回匹配的第一个字符位置 相比暴力匹配(时间复杂度O(N*M)),KMP通过nexts数组来加速匹配的过程,时间复杂度O(N) next数组(建立的一个加速指标) 对str2,即要检查的字符串求next数组 nexts数组:
阅读全文
posted @ 2021-09-01 18:14
sherry001
摘要:前缀树(trie ,发音为 "try")是一个树状的数据结构,用于高效地存储和检索一系列字符串的前缀。前缀树有许多应用,如自动补全和拼写检查。 实现前缀树 Trie 类: Trie() 初始化前缀树对象。void insert(String word) 将字符串 word 插入前缀树中。int co
阅读全文
posted @ 2021-09-01 13:35
sherry001
摘要:Trie(发音类似 "try")或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补完和拼写检查。 请你实现 Trie 类: Trie() 初始化前缀树对象。void insert(String word) 向前缀树中插入字符串 wo
阅读全文
posted @ 2021-09-01 13:06
sherry001

浙公网安备 33010602011771号