![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
每日一道算法题
peabits
Who cases...
展开
-
堆排序
文章目录题目描述示例示例 1示例 2题解代码题目描述堆排序。示例输入第一行输入数组元素个数第二行输入数组各个元素输出输出排序好的数组元素示例 1输入: 59 7 5 3 1 输出: 1 3 5 7 9示例 2输入:65 15 8 12 20 2输出:2 5 8 12 15 20题解堆排序是指利用堆这种数据结构所设计的一...原创 2019-05-24 23:59:58 · 529 阅读 · 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 · 185 阅读 · 0 评论 -
【刷题 issue9】程序员代码面试指南 —— IT 名企算法与数据结构题目最优解
第一章 栈和队列1.9 求最大子矩阵的大小【题目】给定一个整形矩阵 matrix,其中的值只有 0 和 1 两种,求其中全是 1 的矩形区域中,最大的矩形区域内 1 的数量。【难度】校 ★★★☆【题解】如果矩阵的大小为 O(N×M),本题可以做到时间复杂度为 O(N×M)。解法的具体过程如下;矩阵的行数为 N,以每一行做切割,统计以当前行作为底,每个位置往上的 1 的数...原创 2019-08-30 22:56:19 · 187 阅读 · 0 评论 -
【刷题 issue10】程序员代码面试指南 —— IT 名企算法与数据结构题目最优解
第一章 栈和队列1.10 最大值减去最小值小于或等于 num 的子数组数量【题目】给定数组 arr 和整数 num,共返回右多少个子数组满足如下情况:max(arr[i…j)-min(arr[i…j) ≤ nummax(arr[i…j) 表示子数组 arr[i…j] 中的最大值,min(arr[i…j) 表示子数组 arr[i…j] 中的最小值。【要求】如果数组长度为 ...原创 2019-08-30 22:58:28 · 281 阅读 · 0 评论 -
【刷题 issue11】程序员代码面试指南 —— IT 名企算法与数据结构题目最优解
第二章 链表问题2.1 打印两个有序链表的公共部分【题目】给定两个有序链表的头指针 head1 和 head2,打印两个链表的公共部分。【难度】士 ★☆☆☆【题解】给定两个链表士有序链表,可以从两个链表的头开始进行如下判断:如果 head1 的值小于 head2 的值,则 head1 往下移动;如果 head2 的值小于 head1 的值,则 head2 往下移动;如果 he...原创 2019-08-31 12:43:01 · 163 阅读 · 0 评论 -
【刷题 issue12】程序员代码面试指南 —— IT 名企算法与数据结构题目最优解
第二章 链表问题2.2 在单链表和双链表中删除倒数第 K 个节点【题目】分别实现两个函数,一个可以删除单链表中倒数第 K 个节点,另一个可以删除双链表中倒数第 K 个节点。【要求】如果链表长度为 N,时间复杂度达到 O(N),额外空间复杂度达到 O(1)。【难度】士 ★☆☆☆【题解】对于单链表,如果链表为空或者 K<1,则参数是无效的,直接返回即可。否则让链表从头...原创 2019-08-31 12:43:57 · 170 阅读 · 0 评论 -
【刷题 issue13】程序员代码面试指南 —— IT 名企算法与数据结构题目最优解
第二章 链表问题2.3 删除链表的中间节点和 a/b 处的节点【题目】给定链表的头节点 head,实现删除链表的中间节点的函数。**进阶:**给定链表的头节点 head,整数 a 和 b没实现删除位于 a/b 出节点的函数。【难度】士 ★☆☆☆【题解】如果要删除一个节点,则需要找到待删除节点的前一个节点。对于原问题,如果链表为空或者长度为 1,不需要调整。如果链表的长度大于 1,...原创 2019-08-31 12:44:51 · 186 阅读 · 0 评论 -
【刷题 issue14】程序员代码面试指南 —— IT 名企算法与数据结构题目最优解
第二章 链表问题2.4 反转单向和双向链表【题目】分别实现反转单向链表和反转双向填表的函数。【要求】如果链表长度为 N,时间复杂度要求为 O(N),额外空间复杂度要求为 O(1)。【难度】士 ★☆☆☆【题解】本题比较简单,注意在反转链表之后更新链表新的头节点。【实现】ReverseSingleLinkedList.javapublic class Revers...原创 2019-08-31 12:45:34 · 152 阅读 · 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 · 170 阅读 · 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 · 211 阅读 · 0 评论 -
【刷题 issue6】程序员代码面试指南 —— IT 名企算法与数据结构题目最优解
第一章 栈和队列1.6 用栈来求解汉诺塔问题【题目】汉诺塔问题比较经典,这里修改一下游戏规则:限制不能从最左侧的塔直接移动到最右侧,也不从最右侧直接移动到最左侧,必须经过中间。求当塔有 N 层的时候,打印最优移动过程和最优移动总步数。【要求】使用一下两种方法解决:方法一:递归的方法;方法二:非递归的方法,用栈模拟整个过程。【难度】校 ★★★☆【题解】方法一:【递...原创 2019-08-30 17:13:13 · 231 阅读 · 0 评论 -
【刷题 issue5】程序员代码面试指南 —— IT 名企算法与数据结构题目最优解
第一章 栈和队列1.5 用一个栈实现另一个栈的排序【题目】在一个栈中的元素的类型为整形,现在将该栈从顶到底按从大到小的顺序排序,只能申请一个栈。除此之外,可以使用新的变量,但不能使用额外的数据结构。【难度】士 ★☆☆☆【题解】将要排序的栈记为 stack,申请的辅助栈记为 another。在 stack 上执行 pop 操作,弹出的元素记为 temp:如果 temp&n...原创 2019-08-30 17:12:17 · 217 阅读 · 0 评论 -
只出现一次的数字
只出现一次的数字文章目录题目描述说明示例题解代码题目描述给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明算法应具有线性时间复杂度,且不使用额外空间来实现。示例说明:输入第一行输入数组个数第二行输入数组元素输出打印输出所找到的只出现一次的数字示例 1 :输入: 3 2 2 1输...原创 2019-05-21 22:46:15 · 111 阅读 · 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 · 158 阅读 · 0 评论 -
子集
文章目录题目描述说明示例题解代码题目描述给定一组不含重复元素的整数数组 nums ,返回该数组所有可能的子集(幂集)。说明解集不能包含重复的子集。示例输入第一行输入数组元素个数第二行输入数组各个元素输出打印输出该数组所有的子集输入: 31 2 3输出:[ [3], [1], [2], [1,2,3], [1,3], [2...原创 2019-05-23 20:12:38 · 190 阅读 · 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 · 124 阅读 · 0 评论 -
【刷题 issue1】程序员代码面试指南 —— IT 名企算法与数据结构题目最优解
第一章 栈和队列1.1 设计一个有 getMin 功能的栈【题目】实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作。【要求】pop、push、getMin 操作的时间复杂度都是 O(1)。设计的栈类型可以使用现成的栈结构。【难度】士 ★☆☆☆【题解】数据结构采用两个栈:一个用来保存当前栈中的元素,记为 stackData;另一个栈用于保存每一步操作...原创 2019-08-28 21:12:14 · 410 阅读 · 0 评论 -
【刷题 issue2】程序员代码面试指南 —— IT 名企算法与数据结构题目最优解
第一章 栈和队列1.2 由两个栈组成的队列【题目】编写一个类,用两个栈实现队列,支持队列的基本操作(add、poll、peek)【难度】尉 ★★☆☆【题解】队列的特点是先进先出,而栈的特点是先进后出。借助两个栈把顺序颠倒过来即可实现队列的操作。其中一个栈作为压入栈,在压入数据时只往这个栈中压入,记为 stackPush;另一个栈只作为弹出栈,在弹出数据时只从这个栈弹出,记为stack...原创 2019-08-30 11:46:04 · 167 阅读 · 0 评论 -
【刷题 issue3】程序员代码面试指南 —— IT 名企算法与数据结构题目最优解
第一章 栈和队列1.3 如何仅用递归函数和栈操作逆序一个栈【题目】实现栈中元素的逆序,要求只能采用递归函数实现,不能用其它数据结构。【难度】尉 ★★☆☆【题解】本题考查栈的操作和递归函数的设计,为此需要设计两个递归函数。递归函数一:将栈 stack 的栈底元素返回并移除;递归函数二:逆序一个栈,即题目要求实现的方法。【实现】ReverseAStack.java...原创 2019-08-30 17:09:33 · 158 阅读 · 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 · 243 阅读 · 0 评论 -
【刷题 issue16】程序员代码面试指南 —— IT 名企算法与数据结构题目最优解
第二章 链表问题2.6 环形单链表的约瑟夫环问题【题目】请用单向循环链表描述约瑟夫问题。输入:一个环形单向链表的头节点 head 和报数的值 m。输出:最后生存下来的节点,且这个节点自己组成环形单向链表,其它节点都删掉。进阶: 如果链表节点数为 N,在时间复杂度为 O(N) 内完成原问题要求。【难度】原问题:士 ★☆☆☆进阶:校 ★★★☆【题解】普通的解法描述如下:...原创 2019-08-31 12:47:28 · 192 阅读 · 0 评论