12 2021 档案

摘要:1.问题描述 给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标。 2.测试用例 示例 1 输入:nums = [2,3,1,1,4] 输出:true 解释:可以先跳 1 步,从下标 0 到达下标 1 阅读全文
posted @ 2021-12-28 23:08 别摸我键盘 阅读(29) 评论(0) 推荐(0) 编辑
摘要:1.问题描述 你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。 节点的右子树只包含 大于 当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 2.测试用例 示例 1 输入:root = [2,1,3] 阅读全文
posted @ 2021-12-27 17:50 别摸我键盘 阅读(22) 评论(0) 推荐(0) 编辑
摘要:1.问题描述 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 2.测试用例 示例 1 输入:root = [3,9,20,null,null,15,7] 输出:true 示例2 输入:root = 阅读全文
posted @ 2021-12-26 23:28 别摸我键盘 阅读(22) 评论(0) 推荐(0) 编辑
摘要:1.问题描述 翻转一棵二叉树。 2.测试用例 示例 1 输入: 4 / \ 2 7 / \ / \ 1 3 6 9 输出: 4 / \ 7 2 / \ / \ 9 6 3 1 3.代码 节点信息 public class TreeNode { public int val; public TreeN 阅读全文
posted @ 2021-12-25 23:53 别摸我键盘 阅读(25) 评论(0) 推荐(0) 编辑
摘要:1.节点定义 public class TreeNode { public int val; public TreeNode left; public TreeNode right; public TreeNode(int val) { this.val = val; } public TreeNo 阅读全文
posted @ 2021-12-23 22:56 别摸我键盘 阅读(161) 评论(0) 推荐(0) 编辑
摘要:1.问题描述 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。 2.测试用例 示例 1 输入:intervals = [[1,3],[ 阅读全文
posted @ 2021-12-22 23:37 别摸我键盘 阅读(20) 评论(0) 推荐(0) 编辑
摘要:1.问题描述 给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 2.测试用例 示例 1 输入:nums = [2,0,2,1,1,0] 输出:[0,0 阅读全文
posted @ 2021-12-21 22:31 别摸我键盘 阅读(27) 评论(0) 推荐(0) 编辑
摘要:1.问题描述 给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 2.测试用例 示例 1 输入: [3,2,1,5,6,4] 和 k = 2 输出: 5 示例 2 输入: [3,2,3,1,2,4 阅读全文
posted @ 2021-12-21 00:10 别摸我键盘 阅读(25) 评论(0) 推荐(0) 编辑
摘要:1.问题描述 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 2.测试用例 示例 1 输入: [2,2,1] 输出: 1 示例 2 输入: [4,1,2,1,2] 输出: 阅读全文
posted @ 2021-12-19 23:33 别摸我键盘 阅读(24) 评论(0) 推荐(0) 编辑
摘要:简介 插入排序的算法,同样描述了一种简单直观的排序。 它的工作原理是:构建一个有序序列。对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 因为需要双重循环,所以时间复杂度均为O(n^2)。排序过程中,只需要额外的常数空间,所以空间复杂度均为O(1)。 排序过程 实现 @Test pu 阅读全文
posted @ 2021-12-18 12:56 别摸我键盘 阅读(66) 评论(0) 推荐(0) 编辑
摘要:简介 约翰·冯·诺伊曼在 1945 年提出了归并排序。归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表, 阅读全文
posted @ 2021-12-16 22:39 别摸我键盘 阅读(71) 评论(0) 推荐(0) 编辑
摘要:简介 快速排序的基本思想:通过一趟排序,将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。 可以看出,快排也应用了分治思想,一般会用递归来实现。 快速排序使用分治法来把一个串(list)分为两个子串(sub-lists 阅读全文
posted @ 2021-12-15 23:28 别摸我键盘 阅读(56) 评论(0) 推荐(0) 编辑
摘要:简介 1959年由Shell发明,是第一个突破O(n2)的排序算法,是简单插入排序的改进版。 它与插入排序的不同之处在于,它会优先比较距离较远的元素。希尔排序又叫缩小增量排序。 希尔排序在数组中采用跳跃式分组的策略,通过某个增量将数组元素划分为若干组,然后分组进行插入排序,随后逐步缩小增量,继续按组 阅读全文
posted @ 2021-12-14 19:57 别摸我键盘 阅读(83) 评论(0) 推荐(0) 编辑
摘要:简介 冒泡排序也是一种简单的排序算法。 它的基本原理是:重复地扫描要排序的数列,一次比较两个元素,如果它们的大小顺序错误,就把它们交换过来。这样,一次扫描结束,我们可以确保最大(小)的值被移动到序列末尾。 这个算法的名字由来,就是因为越小的元素会经由交换,慢慢“浮”到数列的顶端。 排序过程 实现 / 阅读全文
posted @ 2021-12-13 22:51 别摸我键盘 阅读(37) 评论(0) 推荐(0) 编辑
摘要:简介 选择排序是一种简单直观的排序算法。 它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后追加到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 排序过程 实现 /** * 选择排序 * @param nums 阅读全文
posted @ 2021-12-12 22:50 别摸我键盘 阅读(37) 评论(0) 推荐(0) 编辑
摘要:1.问题描述 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 2.测试用例 示例 1 输入:s = "()" 输出:true 示例 2 输入:s = "()[] 阅读全文
posted @ 2021-12-09 19:43 别摸我键盘 阅读(25) 评论(0) 推荐(0) 编辑
摘要:1.问题描述 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty): 实现 MyQueue 类: void push(int x) 将元素 x 推到队列的末尾 int pop() 从队列的开头移除并返回元素 int peek() 返回队列开头 阅读全文
posted @ 2021-12-08 17:21 别摸我键盘 阅读(21) 评论(0) 推荐(0) 编辑
摘要:1.问题描述 运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。 实现 LRUCache 类: LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓存中,则返 阅读全文
posted @ 2021-12-07 12:34 别摸我键盘 阅读(55) 评论(0) 推荐(0) 编辑
摘要:1.问题描述 请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。 实现 MyStack 类: void push(int x) 将元素 x 压入栈顶。 int pop() 移除并返回栈顶元素。 int top() 返回栈顶元素 阅读全文
posted @ 2021-12-06 23:17 别摸我键盘 阅读(24) 评论(0) 推荐(0) 编辑
摘要:1.问题描述 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 2.测试用例 示例 1 输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] 示例 2: 输入:head = [1], n = 1 输出:[] 示例 3: 输入:head = [1,2], 阅读全文
posted @ 2021-12-01 20:02 别摸我键盘 阅读(22) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示