• 打乱数组

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

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. 20175311 2018-2019-2 《Java程序设计》第五周学习总结

    20175311 2018-2019-2 <Java程序设计>第5周学习总结 教材学习内容总结 抽象类和具体类的区别在于抽象类中有抽象方法而具体类中没有.且抽象类不能实例化. 接口:如果一 ...

  2. PVID和VID彻底研究(上) ——PVID的作用及和VID的区别

    http://blog.csdn.net/cybertan/article/details/8348752 另外一篇 netgear的官方文档: http://club.netgear.cn/Know ...

  3. CefSharp 与 js 相互调用

    https://blog.csdn.net/gong_hui2000/article/details/48155547

  4. Spring-MVC配置思路

    前言: Spring-mvc是一个解决页面代码和后台代码分离的框架. 在没有配置servlet在服务器启动时就创建被创建时,总是当请求过来了servlet对象才会被创建 因此先从请求开始. 为了给每一 ...

  5. C#对屏幕分辨率的操作

    winform应用程序 1.新建Resolution.cs类 using System; using System.ComponentModel; using System.Windows.Forms ...

  6. C语言数据结构基础学习笔记——静态查找表

    查找:在数据集合中寻找满足某种条件的数据元素的过程称为查找. 查找表:用于查找的数据集合称为查找表,一般有以下操作:①查找是否在表中:②查找属性:③进行操作. 查找表又分为: ①静态查找表:只可以进行 ...

  7. 基础总结(01)--css清除浮动几种方法

    1.父元素添加overflow:auto/hidden; 2.父元素内加空div,添加样式clear:both; 3.父元素添加伪类; .parent:after{ content:''; displ ...

  8. C语言博客作业5--指针

    C语言博客作业5--指针 1.本章学习总结(2分) 1.1思维导图 请以思维导图总结本周的学习内容,如下图所示: 1.2本章学习体会及代码量学习体会 1.2.1学习体会 描述本周学习感受,也可以在这里 ...

  9. 用Itextsharp 组件导出PDF 的文档的方法

    Itextsharp 是一个很强大,开源的,轻量级的 PDF 生成组件,官方网上好像没有相应的API 说明文档,以下是在工作中使用的心得与体会,并附上源码,功能包含了pdf 的创建,table 的创建 ...

  10. c# 复制整个文件夹的内容,Copy所有文件

    /// <summary> /// 文件夹下所有内容copy /// </summary> /// <param name="SourcePath"& ...