算法
梓莘
zero-->hero 理性+理智。记住一句话:越努力,越幸运。犯其至难,图其至远。努力规划,实现自我。↖(^ω^)↗
展开
-
【算法题】分解质因数
package com.zixin.learn;import java.util.Scanner;/* * 题目:将一个正整数分解质因数 * 质因数就是能够被该正整数整除的质数 */public class PractiseFour { public static void main(String args[]) { Scanner in = n...原创 2020-03-29 00:26:36 · 326 阅读 · 0 评论 -
【算法题】从尾到头打印单链表(新浪面试题)
题目从尾到头打印单链表思路逆序打印单链表方式1:先将单链表进行反转操作,然后再遍历,这样的话会破坏单链表的结构,不建议方式2:可以利用栈这个数据结构,将各结点压入栈中,然后利用栈的先进后出的特点,就实现了逆序打印的效果//可以利用栈这个数据结构,将各个节点压入到栈中,然后利用栈的先进后出的特点,就实现了逆序打印的效果 public static void reversePrint...原创 2020-03-07 12:02:23 · 100 阅读 · 0 评论 -
【算法题】单链表翻转(腾讯面试题)
题目单链表翻转代码//将单链表反转 public static void reversetList(HeroNode head) { //如果当前链表为空,或者只有一个节点,无需反转,直接返回 if(head.next == null || head.next.next == null) { return ; } //定义一个辅助的指针(变量),帮助我们遍历原来...原创 2020-03-07 12:00:57 · 191 阅读 · 0 评论 -
【算法题】生成窗口最大值数组
生成窗口最大值数组题目:有一个整型数组arr和一个大小为w的窗口从数组的最左边到最右边,窗口每次向右边滑一个位置例如,数组为[4 3 5 4 3 3 6 7],窗口大小为3时。[4 3 5] 4 3 3 6 7 输出54 [3 5 4 ]3 3 6 7 输出54 3 [5 4 3 ]3 6 7 输出54 3 5[ 4 3 3] 6 7 输出44 3 ...原创 2020-03-06 17:33:53 · 234 阅读 · 0 评论 -
【算法题】用栈来解决汉诺塔问题
用栈来解决汉诺塔问题题目修改汉诺塔问题的游戏规则:限制不能从最左侧的塔直接移动到最右侧,也不能从最右侧直接移动到最左侧,而是必须经过中间。求当塔有N层的时候,打印最优移动和最优移动总步数。要求:方法一:递归的方法方法二:非递归的方法,用栈来模拟汉诺塔的三个塔思路方法一:递归的方法首先,如果只剩最上层的塔需要移动,则有如下处理:如果希望从左移动到右,打印Move 1 fr...原创 2020-03-06 16:54:34 · 1034 阅读 · 0 评论 -
【算法题】用一个栈实现另一个栈的排序
题目一个栈中元素的类型为整型,现在想将该栈从顶到底按从大到小的顺序排序,只许申请一个栈。除此之外,可以申请新的变量,但不能申请额外的数据结构。如何完成排序?思路将要排序的栈记为stack,申请的辅助栈记为help,在stack上执行pop操作,弹出的元素记为cur.如果cur小于或等于help的栈顶元素,则将help直接压入help如果cur大于help的栈顶元素,则将help的元素逐...原创 2020-03-06 14:24:53 · 248 阅读 · 0 评论 -
【算法题】猫狗队列
题目宠物猫和狗的类如下:public static class Pet { private String type; public Pet(String type) { this.type = type; } public String getPetType() { return this.type; } } public static class D...原创 2020-03-06 13:52:25 · 223 阅读 · 0 评论 -
【算法题】使用递归和栈逆序一个栈
题目仅用递归操作和栈逆序 一个栈。一个栈依次压入1、2、3、4、5 那么从栈顶到栈底分别是5,4,3,2,1。将这个栈转置后,从栈顶到栈底为1、2、3、4、5,也就是实现栈中元素的逆序,但是只能用递归来实现 ,不能用其他数据结构。思路需要两个递归函数递归函数一:将栈stack的栈底元素返回并移除/** * @Desc 获取栈底元素返回并移除 * @param stack *...原创 2020-03-06 11:39:16 · 254 阅读 · 0 评论 -
【算法题】使用两个栈实现队列的功能
题目编写一个类,用两个栈实现队列,支持队列的基本操作(add poll peek)思路栈的特点是先进后出,而队列的特定是先进先出,我们用两个栈正好能把顺序反过来,实现类似队列的操作。一个栈作为压入栈,在压入数据的时候只往这个栈中压入,记为stackPush,另一个栈只作为弹出栈,在弹出数据的时候只从这个栈弹出,记为stackPop.因为数据压入栈的时候,顺序是先进后出的,那么只要把sta...原创 2020-03-06 10:58:12 · 280 阅读 · 0 评论 -
【算法题】设计一个有getMin功能的栈
题目设计一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作。要求pop push getMin操作的时间复杂度都是O(1)设计的栈类型可以使用现成的栈结构解答在设计上使用两个栈,一个栈用来保存当前栈中的元素,其功能和一个正常的栈没有区别,这个栈记为stackData;另一个栈用于保存每一步的最小值,这个栈记为stackMin.实现方案有2种:第一种设计方案...原创 2020-03-06 10:01:13 · 201 阅读 · 0 评论