77.组合 给定两个整数n和k,返回范围[1,n]中所有可能的k个数的组合。 你可以按任何顺序返回答案。 示例1: 输入:n=4,k=2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ] 示例2: 输入:n=1,k=1 输出:[[1]] 提示: 1<=n<=201<=k<=n 正解(回溯) 直接的解法当然是使用for循环,例如示例中k为2,很容易想到用两个for循环,这样就可以输出和示例中一样的结果。输入:n=100,k=3那么就三层for循环如果n为100,k为50呢此时就会发现虽然想暴力搜索,但是用for循环嵌...

  kyKCamLr7uLo   29天前   42   0   0 算法与数据结构

669.修剪二叉搜索树 给你二叉搜索树的根节点root,同时给定最小边界low和最大边界high。通过修剪二叉搜索树,使得所有节点的值在[low,high]中。修剪树不应该改变保留在树中的元素的相对结构(即,如果没有被移除,原有的父代子代关系都应当保留)。可以证明,存在唯一的答案。 所以结果应当返回修剪好的二叉搜索树的新的根节点。注意,根节点可能会根据给定的边界发生改变。 示例1: 输入:root=[1,0,2],low=1,high=2 输出:[1,null,2] 示例2: 输入:root=[3,0,4,null,2,null,null,1],low=1,high=3 输出:[3,2,nu...

  kyKCamLr7uLo   30天前   46   0   0 算法与数据结构

530.二叉搜索树的最小绝对差 给你一个二叉搜索树的根节点root,返回树中任意两不同节点值之间的最小差值。 差值是一个正数,其数值等于两值之差的绝对值。 示例1: 输入:root=[4,2,6,1,3] 输出:1 示例2: 输入:root=[1,0,48,null,null,12,49] 输出:1 提示: 树中节点的数目范围是[2,104]0<=Node.val<=105 正解 题目中要求在二叉搜索树上任意两节点的差的绝对值的最小值。注意是二叉搜索树,二叉搜索树可是有序的。遇到在二叉搜索树上求什么最值啊,差值之类的,就把它想成在一个有序数组上求最值,求差值,这样就简单多了。...

  kyKCamLr7uLo   2024年08月20日   40   0   0 算法与数据结构

235.二叉搜索树的最近公共祖先 给定一个二叉搜索树,找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树T的两个结点p、q,最近公共祖先表示为一个结点x,满足x是p、q的祖先且x的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉搜索树:root=[6,2,8,0,4,7,9,null,null,3,5] 示例1: 输入:root=[6,2,8,0,4,7,9,null,null,3,5],p=2,q=8 输出:6 解释:节点2和节点8的最近公共祖先是6。 示例2: 输入:root=[6,2,8,0,4,7,9,null,null,3,5]...

  kyKCamLr7uLo   2024年08月20日   45   0   0 算法与数据结构

513.找树左下角的值 给定一个二叉树的根节点root,请找出该二叉树的最底层最左边节点的值。 假设二叉树中至少有一个节点。 示例1: 输入:root=[2,1,3] 输出:1 示例2: 输入:[1,2,3,4,null,5,6,null,null,7] 输出:7 提示: 二叉树的节点个数的范围是[1,104]-231<=Node.val<=2311 正解 我们来分析一下题目:在树的最后一行找到最左边的值。首先要是最后一行,然后是最左边的值。如果使用递归法,如何判断是最后一行呢,其实就是深度最大的叶子节点一定是最后一行。所以要找深度最大的叶子节点。那么如何找最左边的呢?可以使...

  kyKCamLr7uLo   2024年08月16日   134   0   0 算法与数据结构

110.平衡二叉树(优先掌握递归) 给定一个二叉树,判断它是否是平衡二叉树平衡二叉树是指该树所有节点的左右子树的深度相差不超过1。示例1: 输入:root=[3,9,20,null,null,15,7] 输出:true 示例2: 输入:root=[1,2,2,3,3,null,null,4,4] 输出:false 示例3: 输入:root=[] 输出:true 提示: 树中的节点数在范围[0,5000]内-104<=Node.val<=104 正解 既然要求比较高度,必然是要后序遍历。 明确递归函数的参数和返回值参数:当前传入节点。返回值:以当前传入节点为根节点的树的高度...

  kyKCamLr7uLo   2024年08月15日   61   0   0 算法与数据结构

二叉树遍历 分为前序、中序、后续、层序四种其中前中后序属于深度优先搜索,层序属于广度优先搜索 前序遍历顺序: 根节点->左子树->右子树 中序遍历顺序: 左子树->根节点->右子树 后序遍历顺序: 左子树->右子树->根节点不难发现,前中后其实就是根节点在遍历中的位置至于层序遍历,顾名思义,就是一层一层的从左到右遍历 递归遍历(前中后) 确定递归函数的参数和返回值:因为要打印出前序遍历节点的数值,所以参数里需要传入vector来放节点的数值,除了这一点就不需要再处理什么数据了也不需要有返回值,所以递归函数返回类型就是void。 确定终止条件:在递归的过程中...

  kyKCamLr7uLo   2024年08月13日   41   0   0 算法与数据结构

226.翻转二叉树 给你一棵二叉树的根节点root,翻转这棵二叉树,并返回其根节点。 示例1: 输入:root=[4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1] 示例2: 输入:root=[2,1,3] 输出:[2,3,1] 示例3: 输入:root=[] 输出:[] 提示: 树中节点数目范围在[0,100]内-100<=Node.val<=100 正解 这得怎么翻转呢?如果要从整个树来看,翻转还真的挺复杂,整个树以中间分割线进行翻转可以发现想要翻转它,其实就把每一个节点的左右孩子交换一下就可以了。这道题目使用前序遍历和后序遍历都可以,唯独中序遍历不方便...

  kyKCamLr7uLo   2024年08月13日   54   0   0 算法与数据结构

150.逆波兰表达式求值 给你一个字符串数组tokens,表示一个根据逆波兰表示法表示的算术表达式。 请你计算该表达式。返回一个表示表达式值的整数。 注意: 有效的算符为'+'、'-'、''和'/'。每个操作数(运算对象)都可以是一个整数或者另一个表达式。两个整数之间的除法总是向零截断。表达式中不含除零运算。输入是一个根据逆波兰表示法表示的算术表达式。答案及所有中间计算结果可以用32位整数表示。 示例1: 输入:tokens=["2","1","+","3",""] 输出:9 解释:该算式转化为常见的中缀算术表达式为:((2+1)3)=9 示例2: 输入:tokens=["4","13",...

  kyKCamLr7uLo   2024年08月11日   40   0   0 算法与数据结构

232.用栈实现队列 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty): 实现MyQueue类: voidpush(intx)将元素x推到队列的末尾intpop()从队列的开头移除并返回元素intpeek()返回队列开头的元素booleanempty()如果队列为空,返回true;否则,返回false说明: 你只能使用标准的栈操作——也就是只有pushtotop,peek/popfromtop,size,和isempty操作是合法的。你所使用的语言也许不支持栈。你可以使用list或者deque(双端队列)来模拟一个栈,只要是标准的栈...

  kyKCamLr7uLo   2024年08月09日   63   0   0 算法与数据结构

344.反转字符串 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组s的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用\(O(1)\)的额外空间解决这一问题。 示例1: 输入:s=["h","e","l","l","o"] 输出:["o","l","l","e","h"] 示例2: 输入:s=["H","a","n","n","a","h"] 输出:["h","a","n","n","a","H"] 提示: 1<=s.length<=105s[i]都是ASCII码表中的可打印字符 正解(双指针) 上代码(●'◡'●) classS...

  kyKCamLr7uLo   2024年08月07日   59   0   0 算法与数据结构

24.两两交换链表中的节点 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 示例1: 输入:head=[1,2,3,4] 输出:[2,1,4,3] 示例2: 输入:head=[] 输出:[] 示例3: 输入:head=[1] 输出:[1] 提示: 链表中节点的数目在范围[0,100]内0<=Node.val<=100 正解(模拟) 整个交换过程: 上代码(●'◡'●) / Definitionforsingly-linkedlist. structListNode{ intval; Lis...

  kyKCamLr7uLo   2024年08月07日   59   0   0 算法与数据结构

242.有效的字母异位词 给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。 注意:若s和t中每个字符出现的次数都相同,则称s和t互为字母异位词。 示例1: 输入:s="anagram",t="nagaram" 输出:true 示例2: 输入:s="rat",t="car" 输出:false 提示: 1<=s.length,t.length<=5104s和t仅包含小写字母 进阶:如果输入字符串包含unicode字符怎么办?你能否调整你的解法来应对这种情况? 正解(哈希表) 数组其实就是一个简单的哈希表假设s长度为n,t长度为m;只有在n=m时才可能是有效的字母异...

  kyKCamLr7uLo   2024年08月07日   39   0   0 算法与数据结构

454.四数相加Ⅱ 给你四个整数数组nums1、nums2、nums3和nums4,数组长度都是n,请你计算有多少个元组(i,j,k,l)能满足: 0<=i,j,k,l<nnums1[i]+nums2[j]+nums3[k]+nums4[l]0 示例1: 输入:nums1=[1,2],nums2=[-2,-1],nums3=[-1,2],nums4=[0,2] 输出:2 解释: 两个元组如下: 1.(0,0,0,1)->nums1[0]+nums2[0]+nums3[0]+nums4[1]=1+(-2)+(-1)+2=0 2.(1,1,0,0)->nums1[1]+nu...

  kyKCamLr7uLo   2024年08月07日   36   0   0 算法与数据结构

203.移除链表元素 给你一个链表的头节点head和一个整数val,请你删除链表中所有满足Node.valval的节点,并返回新的头节点。 示例1: 输入:head=[1,2,6,3,4,5,6],val=6 输出:[1,2,3,4,5] 示例2: 输入:head=[],val=1 输出:[] 示例3: 输入:head=[7,7,7,7],val=7 输出:[] 提示: 列表中的节点数目在范围[0,104]内1<=Node.val<=500<=val<=50 正解(...whateverthisis) 思路1: 思路二: 以上是AC此题的两种思路,没啥好说的...

  kyKCamLr7uLo   2024年08月07日   65   0   0 算法与数据结构
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~