
每日一道算法题
peabits
Who cases...
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
堆排序
文章目录题目描述示例示例 1示例 2题解代码 题目描述 堆排序。 示例 输入 第一行输入数组元素个数 第二行输入数组各个元素 输出 输出排序好的数组元素 示例 1 输入: 5 9 7 5 3 1 输出: 1 3 5 7 9 示例 2 输入: 6 5 15 8 12 20 2 输出: 2 5 8 12 15 20 题解 堆排序是指利用堆这种数据结构所设计的一...原创 2019-05-24 23:59:58 · 810 阅读 · 0 评论 -
【刷题 issue8】程序员代码面试指南 —— IT 名企算法与数据结构题目最优解
第一章 栈和队列 1.8 构造数组的 MaxTree 【题目】 定义二叉树节点如下: public class Node { public int value; public Node left; public Node right; public Node(int data) { this.value = data; } } 一个数...原创 2019-08-30 22:54:34 · 240 阅读 · 0 评论 -
【刷题 issue9】程序员代码面试指南 —— IT 名企算法与数据结构题目最优解
第一章 栈和队列 1.9 求最大子矩阵的大小 【题目】 给定一个整形矩阵 matrix,其中的值只有 0 和 1 两种,求其中全是 1 的矩形区域中,最大的矩形区域内 1 的数量。 【难度】 校 ★★★☆ 【题解】 如果矩阵的大小为 O(N×M),本题可以做到时间复杂度为 O(N×M)。解法的具体过程如下; 矩阵的行数为 N,以每一行做切割,统计以当前行作为底,每个位置往上的 1 的数...原创 2019-08-30 22:56:19 · 221 阅读 · 0 评论 -
【刷题 issue10】程序员代码面试指南 —— IT 名企算法与数据结构题目最优解
第一章 栈和队列 1.10 最大值减去最小值小于或等于 num 的子数组数量 【题目】 给定数组 arr 和整数 num,共返回右多少个子数组满足如下情况: max(arr[i…j)-min(arr[i…j) ≤ num max(arr[i…j) 表示子数组 arr[i…j] 中的最大值,min(arr[i…j) 表示子数组 arr[i…j] 中的最小值。 【要求】 如果数组长度为 ...原创 2019-08-30 22:58:28 · 369 阅读 · 0 评论 -
【刷题 issue11】程序员代码面试指南 —— IT 名企算法与数据结构题目最优解
第二章 链表问题 2.1 打印两个有序链表的公共部分 【题目】 给定两个有序链表的头指针 head1 和 head2,打印两个链表的公共部分。 【难度】 士 ★☆☆☆ 【题解】 给定两个链表士有序链表,可以从两个链表的头开始进行如下判断: 如果 head1 的值小于 head2 的值,则 head1 往下移动; 如果 head2 的值小于 head1 的值,则 head2 往下移动; 如果 he...原创 2019-08-31 12:43:01 · 208 阅读 · 0 评论 -
【刷题 issue12】程序员代码面试指南 —— IT 名企算法与数据结构题目最优解
第二章 链表问题 2.2 在单链表和双链表中删除倒数第 K 个节点 【题目】 分别实现两个函数,一个可以删除单链表中倒数第 K 个节点,另一个可以删除双链表中倒数第 K 个节点。 【要求】 如果链表长度为 N,时间复杂度达到 O(N),额外空间复杂度达到 O(1)。 【难度】 士 ★☆☆☆ 【题解】 对于单链表,如果链表为空或者 K<1,则参数是无效的,直接返回即可。否则让链表从头...原创 2019-08-31 12:43:57 · 232 阅读 · 0 评论 -
【刷题 issue13】程序员代码面试指南 —— IT 名企算法与数据结构题目最优解
第二章 链表问题 2.3 删除链表的中间节点和 a/b 处的节点 【题目】 给定链表的头节点 head,实现删除链表的中间节点的函数。 **进阶:**给定链表的头节点 head,整数 a 和 b没实现删除位于 a/b 出节点的函数。 【难度】 士 ★☆☆☆ 【题解】 如果要删除一个节点,则需要找到待删除节点的前一个节点。 对于原问题,如果链表为空或者长度为 1,不需要调整。如果链表的长度大于 1,...原创 2019-08-31 12:44:51 · 247 阅读 · 0 评论 -
【刷题 issue14】程序员代码面试指南 —— IT 名企算法与数据结构题目最优解
第二章 链表问题 2.4 反转单向和双向链表 【题目】 分别实现反转单向链表和反转双向填表的函数。 【要求】 如果链表长度为 N,时间复杂度要求为 O(N),额外空间复杂度要求为 O(1)。 【难度】 士 ★☆☆☆ 【题解】 本题比较简单,注意在反转链表之后更新链表新的头节点。 【实现】 ReverseSingleLinkedList.java public class Revers...原创 2019-08-31 12:45:34 · 197 阅读 · 0 评论 -
【刷题 issue15】程序员代码面试指南 —— IT 名企算法与数据结构题目最优解
第二章 链表问题 2.5 反转部分单向链表 【题目】 给定一个单向链表的头节点 head,以及两个整数 from 和 to,在单向链表上吧第 from 个节点到底 to 个节点这一部分进行反转。 【要求】 如果链表长度为 N,时间复杂度要求为 O(N),额外空间复杂度要求为 O(1)。 如果不满足 1≤from≤to≤N,则不需要调整。 【难度】 士 ★☆☆☆ 【题解】 本题可能出现更换头节点...原创 2019-08-31 12:46:14 · 245 阅读 · 0 评论 -
【刷题 issue7】程序员代码面试指南 —— IT 名企算法与数据结构题目最优解
第一章 栈和队列 1.7 生成窗口最大值数组 【题目】 一个整形数组 arr 和 一个大小为 w 的窗口从数组的最左边滑到最右边,窗口每次向右边滑一个位置。如果数组长度为 n,窗口大小为 w,则一共产生 n-w+1 个窗口的最大值。 请实现一个函数: 输入:整形数组 arr,窗口大小为 w。 输出:一个长度为 n-w+1 的数组 res,res[i] 表示每一个窗口状态下的最大值。 【难度】 ...原创 2019-08-30 22:50:03 · 290 阅读 · 0 评论 -
【刷题 issue6】程序员代码面试指南 —— IT 名企算法与数据结构题目最优解
第一章 栈和队列 1.6 用栈来求解汉诺塔问题 【题目】 汉诺塔问题比较经典,这里修改一下游戏规则:限制不能从最左侧的塔直接移动到最右侧,也不从最右侧直接移动到最左侧,必须经过中间。求当塔有 N 层的时候,打印最优移动过程和最优移动总步数。 【要求】 使用一下两种方法解决: 方法一:递归的方法; 方法二:非递归的方法,用栈模拟整个过程。 【难度】 校 ★★★☆ 【题解】 方法一:【递...原创 2019-08-30 17:13:13 · 321 阅读 · 0 评论 -
【刷题 issue5】程序员代码面试指南 —— IT 名企算法与数据结构题目最优解
第一章 栈和队列 1.5 用一个栈实现另一个栈的排序 【题目】 在一个栈中的元素的类型为整形,现在将该栈从顶到底按从大到小的顺序排序,只能申请一个栈。除此之外,可以使用新的变量,但不能使用额外的数据结构。 【难度】 士 ★☆☆☆ 【题解】 将要排序的栈记为 stack,申请的辅助栈记为 another。在 stack 上执行 pop 操作,弹出的元素记为 temp: 如果 temp&n...原创 2019-08-30 17:12:17 · 285 阅读 · 0 评论 -
只出现一次的数字
只出现一次的数字 文章目录题目描述说明示例题解代码 题目描述 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明 算法应具有线性时间复杂度,且不使用额外空间来实现。 示例 说明: 输入 第一行输入数组个数 第二行输入数组元素 输出 打印输出所找到的只出现一次的数字 示例 1 : 输入: 3 2 2 1 输...原创 2019-05-21 22:46:15 · 216 阅读 · 0 评论 -
比特位计数
文章目录题目描述示例示例 1示例 2题解代码 题目描述 给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。 示例 输入 输入一个非负整数 num 输出 输出 0 ~ num 中的每一个数字对应二进制数的 1 的数目 示例 1 输入: 2 输出: 0 1 1 示例 2 输入: 5 输出: 0 1...原创 2019-05-25 21:13:16 · 296 阅读 · 0 评论 -
子集
文章目录题目描述说明示例题解代码 题目描述 给定一组不含重复元素的整数数组 nums ,返回该数组所有可能的子集(幂集)。 说明 解集不能包含重复的子集。 示例 输入 第一行输入数组元素个数 第二行输入数组各个元素 输出 打印输出该数组所有的子集 输入: 3 1 2 3 输出: [ [3], [1], [2], [1,2,3], [1,3], [2...原创 2019-05-23 20:12:38 · 312 阅读 · 0 评论 -
二分查找
文章目录题目描述示例示例 1示例 2题解代码 题目描述 给定已排好序的 nnn 个元素 a[0:n−1]a[0 : n - 1]a[0:n−1] ,在这 nnn 个元素中找出某一特定元素 xxx 。 示例 输入 第一行输入数组元素个数 nnn 第二行输入数组各个元素 a[0]...a[n−1]{a[0] ... a[n - 1]}a[0]...a[n−1] 第三行输入所要找的元素 xxx ...原创 2019-05-23 20:15:39 · 171 阅读 · 0 评论 -
【刷题 issue1】程序员代码面试指南 —— IT 名企算法与数据结构题目最优解
第一章 栈和队列 1.1 设计一个有 getMin 功能的栈 【题目】 实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作。 【要求】 pop、push、getMin 操作的时间复杂度都是 O(1)。 设计的栈类型可以使用现成的栈结构。 【难度】 士 ★☆☆☆ 【题解】 数据结构采用两个栈:一个用来保存当前栈中的元素,记为 stackData;另一个栈用于保存每一步操作...原创 2019-08-28 21:12:14 · 477 阅读 · 0 评论 -
【刷题 issue2】程序员代码面试指南 —— IT 名企算法与数据结构题目最优解
第一章 栈和队列 1.2 由两个栈组成的队列 【题目】 编写一个类,用两个栈实现队列,支持队列的基本操作(add、poll、peek) 【难度】 尉 ★★☆☆ 【题解】 队列的特点是先进先出,而栈的特点是先进后出。借助两个栈把顺序颠倒过来即可实现队列的操作。其中一个栈作为压入栈,在压入数据时只往这个栈中压入,记为 stackPush;另一个栈只作为弹出栈,在弹出数据时只从这个栈弹出,记为stack...原创 2019-08-30 11:46:04 · 241 阅读 · 0 评论 -
【刷题 issue3】程序员代码面试指南 —— IT 名企算法与数据结构题目最优解
第一章 栈和队列 1.3 如何仅用递归函数和栈操作逆序一个栈 【题目】 实现栈中元素的逆序,要求只能采用递归函数实现,不能用其它数据结构。 【难度】 尉 ★★☆☆ 【题解】 本题考查栈的操作和递归函数的设计,为此需要设计两个递归函数。 递归函数一:将栈 stack 的栈底元素返回并移除; 递归函数二:逆序一个栈,即题目要求实现的方法。 【实现】 ReverseAStack.java...原创 2019-08-30 17:09:33 · 204 阅读 · 0 评论 -
【刷题 issue4】程序员代码面试指南 —— IT 名企算法与数据结构题目最优解
第一章 栈和队列 1.4 猫狗队列 【题目】 宠物、猫和狗的类定义如下: public class Pet { private String type; public Pet(String type) { this.type = type; } public String getPetType() { return this.t...原创 2019-08-30 17:11:02 · 324 阅读 · 0 评论 -
【刷题 issue16】程序员代码面试指南 —— IT 名企算法与数据结构题目最优解
第二章 链表问题 2.6 环形单链表的约瑟夫环问题 【题目】 请用单向循环链表描述约瑟夫问题。 输入:一个环形单向链表的头节点 head 和报数的值 m。 输出:最后生存下来的节点,且这个节点自己组成环形单向链表,其它节点都删掉。 进阶: 如果链表节点数为 N,在时间复杂度为 O(N) 内完成原问题要求。 【难度】 原问题: 士 ★☆☆☆ 进阶: 校 ★★★☆ 【题解】 普通的解法描述如下: ...原创 2019-08-31 12:47:28 · 263 阅读 · 0 评论