• 打乱数组

不断的让第一个与后面随机选择的数交换

class Solution {

private int[] nums;

private int[] initnums;

public Solution(int[] nums) {

this.nums=nums;

this.initnums=Arrays.copyOf(nums, nums.length);//这里必须要复制,要指明对象

}

/** Resets the array to its original configuration and return it. */

public int[] reset() {

return initnums;//这里返回上面的复制

}

/** Returns a random shuffling of the array. */

public int[] shuffle() {

Random random=new Random();

for (int i = 0; i <nums.length/2; i++) {

swap(nums, 0, random.nextInt(nums.length));

}

return nums;

}

private void swap(int[] nums,int i,int j) {

int temp=nums[i];

nums[i]=nums[j];

nums[j]=temp;

}

}

  • 最小栈

  • 自己写的有点慢,勉强通过

    class MinStack {

    /** initialize your data structure here. */

    Stack<Integer> stack;

    public MinStack() {

    stack=new Stack<>();

    }

    public void push(int x) {

    stack.push(x);

    }

    public void pop() {

    if (!stack.isEmpty()) {

    stack.pop();

    }

    }

    public int top() {

    return stack.peek();//这里和我之前理解的不太一样,之前是取栈顶顺便就删除了

    }

    public int getMin() {

    Stack<Integer> stack2=new Stack<>();

    stack2.addAll(0, stack);

    Collections.sort(stack2);

    return stack2.get(0);

    }

    }

  • 双栈法挺快

    class MinStack {

    /** initialize your data structure here. */

    Stack<Integer> stack,minStack;

    public MinStack() {

    stack=new Stack<>();

    minStack=new Stack<>();

    }

    public void push(int x) {

    stack.push(x);

    if (minStack.isEmpty()) {

    minStack.push(x);

    }else if (x<=minStack.peek()) {//此处若没有等号

    minStack.push(x);

    }

    }

    public void pop() {

    if (stack.peek().equals(minStack.peek())) {//这里可能会提示栈为空的异常

    stack.pop();

    minStack.pop();

    }else {

    stack.pop();

    }

    }

    public int top() {

    return stack.peek();

    }

    public int getMin() {

    return minStack.peek();

    }

    }

算法练习LeetCode初级算法之设计问题的更多相关文章

  1. 【LeetCode算法】LeetCode初级算法——字符串

      在LeetCode初级算法的字符串专题中,共给出了九道题目,分别为:反转字符串,整数反转,字符串中的第一个唯一字符,有效的字母异位词,验证回文字符串,字符串转换整数,实现strStr(),报数,最 ...

  2. 算法练习LeetCode初级算法之链表

    删除链表中的节点 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode ne ...

  3. 算法练习LeetCode初级算法之字符串

    反转字符串 我的解法比较low,利用集合的工具类Collections.reverse反转,用时过长 class Solution { public void reverseString(char[] ...

  4. 算法练习LeetCode初级算法之数组

    删除数组中的重复项 官方解答: 旋转数组 存在重复元素 只出现一次的数     官方解答:  同一个字符进行两次异或运算就会回到原来的值 两个数组的交集 II import java.util.Arr ...

  5. 算法练习LeetCode初级算法之其他

    位1的个数 解法一: class Solution { // you need to treat n as an unsigned value public int hammingWeight(int ...

  6. 算法练习LeetCode初级算法之数学

    Fizz Buzz class Solution { public List<String> fizzBuzz(int n) { List<String> list=new L ...

  7. 算法练习LeetCode初级算法之动态规划

    爬楼梯:斐波那契数列 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 非递归解法 class S ...

  8. 算法练习LeetCode初级算法之排序和搜索

    合并两个有序数组 class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { System.arrayco ...

  9. 算法练习LeetCode初级算法之树

    二叉树的前序遍历 我的解法:利用递归,自底向下逐步添加到list,返回最终的前序遍历list class Solution { public List<Integer> preorderT ...

随机推荐

  1. css中,在高度已知,写出三栏布局,其中左栏、右栏宽度各位300px,中间自适应

    解决方案主要有五种 首先写入全局样式 <style type="text/css"> html * { margin: ; padding: ; } .layout { ...

  2. js判断是否安装某个android app,没有安装下载该应用(websocket通信,监听窗口失去焦点事件)

    现在经常有写场景需要提示用户下载app, 但是如果用户已经安装,我们希望是直接打开app. 实际上,js是没有判断app是否已经安装的方法的,我们只能曲线救国. 首先,我们需要有call起app的sc ...

  3. 学习MeteoInfo二次开发教程(十)

    1.复制文件cloud_1009271330.000,I-01.pal 2.改: GridData cloud = aDataInfo.GetGridData(""); 为: Gr ...

  4. Java进程&线程(整理)

    Java进程&线程 程序:程序员写的代码,就是代码,不运行好像不会发生什么: 进程:一个进程可以理解为"运行的"一个程序,当我们启动一个java程序后,对应的jvm就会创建 ...

  5. 用自己的话简要阐述struts2的执行流程

    Struts 2框架本身大致可以分为3个部分:核心控制器FilterDispatcher.业务控制器Action和用户实现的企业业务逻辑组件.核心控制器FilterDispatcher是Struts ...

  6. spring入门 依赖入注的三种方式(1)

    第一种:构造器参数注入 第二种:setter方法属性注入(setter方法的规范-JavaBean规范) 第三种:接口注入 Bean 属性的注入:对一个对象的属性的赋值 1.构造器参数注入: publ ...

  7. C语言列出真分数序列代码及解析

    问题描述 按递增顺序依次列出所有分母为60,分子小于60的最简分数. 问题分析 分子.分母只有公因数1的分数叫做最简分数或者说分子和分母是互质数的分数,叫做最简分数,又称既约分数,如2/3,8/9,3 ...

  8. 检测mysq组复制的脚本

    #!/bin/bash PROG_OUT="/root/checkmysql-group.log" # 输出日志到至此文件,建议配置绝对路径 #PROG_OUT="/de ...

  9. LeetCode 106. Construct Binary Tree from Inorder and Postorder Traversal 由中序和后序遍历建立二叉树 C++

    Given inorder and postorder traversal of a tree, construct the binary tree. Note:You may assume that ...

  10. 打包发布到Tomcat

    idea:      file-->project structure -->  Artifacts --> 点+号 web application exploded  from m ...