• 打乱数组

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

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. EXT 获取gird各值

    var cellclick = function (item, td, cellIndex, record, tr, rowIndex, e) { //[ListenerArgument(0, &qu ...

  2. Skyline TerraExplorer 7.0- 扩展信息树

    Skyline TerraExplorer V7增加了一个扩展信息树的控件TEInformationWindowEx.  该控件能够将TE3DWindowEx窗口里面的对象显示为信息树的方式.TEIn ...

  3. javascript 字符串与正则

    序:就是简单记录下正则的一些基础,还有cookie的一些设置获取删除 #字符串操作 search 查找 substring 获取子字符串 str.substring(start,stop) charA ...

  4. 实战ELK(9) Elasticsearch地理位置

    地理坐标点(geo-point) 是指地球表面可以用经纬度描述的一个点.地理坐标点可以用来计算两个坐标位置间的距离,或者判断一个点是否在一个区域中.地理坐标点不能被动态映射(dynamic mappi ...

  5. C#通过COM组件调用IDL的pro程序

    如果在“COM_IDL_connectLib.COM_IDL_connect oComIDL = new COM_IDL_connectLib.COM_IDL_connect();”步骤提示“...8 ...

  6. 13. nginx,lvs之一

    摘要: 1.详细描述常见nginx常用模块和模块的使用示例 2.简述Linux集群类型.系统扩展方式及调度方法 3.简述lvs四种集群有点及使用场景 4.描述LVS-NAT.LVS-DR的工作原理并实 ...

  7. Spring Boot 初识

    发展到今天,spring已经是一个大家族了,如果想要使用其中的两到三个组件就会有多复杂的配置,有时候还有会版本不一致的错误,让人很无奈.于是,就有了spring Boot,spring  Boot   ...

  8. shell 批量删除所有指定名字的目录

    例如删除当前目录下所有名字为DerivedData的目录 find . -name "DerivedData" -type d -exec rm -r "{}" ...

  9. Lombok使用简介

    1.在maven中加入Lombok引入 2.在开发环境中加入Lombok插件 3.在实体类的类名上增加注释@Date即可使用所有get,set方法

  10. JAVA设计方法思考之如何实现一个方法执行完毕后自动执行下一个方法

    今天编程时,突然想起来在一些异步操作或Android原生库的时候,需要我们实现一些方法, 这些方法只需要我们具体实现,然后他们会在适当的时候,自动被调用! 例如AsyncTask,执行玩doInBac ...