算法练习LeetCode初级算法之设计问题
打乱数组
不断的让第一个与后面随机选择的数交换
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初级算法之设计问题的更多相关文章
- 【LeetCode算法】LeetCode初级算法——字符串
在LeetCode初级算法的字符串专题中,共给出了九道题目,分别为:反转字符串,整数反转,字符串中的第一个唯一字符,有效的字母异位词,验证回文字符串,字符串转换整数,实现strStr(),报数,最 ...
- 算法练习LeetCode初级算法之链表
删除链表中的节点 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode ne ...
- 算法练习LeetCode初级算法之字符串
反转字符串 我的解法比较low,利用集合的工具类Collections.reverse反转,用时过长 class Solution { public void reverseString(char[] ...
- 算法练习LeetCode初级算法之数组
删除数组中的重复项 官方解答: 旋转数组 存在重复元素 只出现一次的数 官方解答: 同一个字符进行两次异或运算就会回到原来的值 两个数组的交集 II import java.util.Arr ...
- 算法练习LeetCode初级算法之其他
位1的个数 解法一: class Solution { // you need to treat n as an unsigned value public int hammingWeight(int ...
- 算法练习LeetCode初级算法之数学
Fizz Buzz class Solution { public List<String> fizzBuzz(int n) { List<String> list=new L ...
- 算法练习LeetCode初级算法之动态规划
爬楼梯:斐波那契数列 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 非递归解法 class S ...
- 算法练习LeetCode初级算法之排序和搜索
合并两个有序数组 class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { System.arrayco ...
- 算法练习LeetCode初级算法之树
二叉树的前序遍历 我的解法:利用递归,自底向下逐步添加到list,返回最终的前序遍历list class Solution { public List<Integer> preorderT ...
随机推荐
- spring boot websocket stomp 实现广播通信和一对一通信聊天
一.前言 玩.net的时候,在asp.net下有一个叫 SignalR 的框架,可以在ASP .NET的Web项目中实现实时通信.刚接触java寻找相关替代品,发现 java 体系中有一套基于stom ...
- [EasyUI]确认删除
//删除方法 function del() { var obj = getSelected(); if (obj) { $.messager.confirm('确认', '确定要删除:' + obj. ...
- Galaxy2D游戏引擎常见问题解答
◆Galaxy2D游戏引擎开源吗? Galaxy2D游戏引擎不开源. ◆Galaxy2D相对HGE有何优点? Galaxy2D相对HGE有以下优点: (1)自带音频播放功能,HGE ...
- .net core2.2
GetCurrentDirectory returns the worker directory of the process started by IIS rather than the app's ...
- MVC动态赋值的td选中,获取当前的td的ID或者值
前台绑定数据: <div class="mailbox-content"> <table class="table"> <tbod ...
- 特殊字符的过滤,防止xss攻击
概念 XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安全漏洞,它允 ...
- 未能加载文件或程序集“Microsoft.Vbe.Interop, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c”或它的某一个依赖项。系统找不到制定的文件。
未能加载文件或程序集"Microsoft.Vbe.Interop, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e ...
- leetCode104. 二叉树的最大深度
给定一个二叉树,找出其最大深度. 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数. 说明: 叶子节点是指没有子节点的节点. 示例:给定二叉树 [3,9,20,null,null,15,7], ...
- js打印页面指定区域,并去掉页眉上的时间和请求路径
需要通过js打印指定页面的内容 <style media=print type="text/css"> .noprint{visibility:hidden} < ...
- Exp4 恶意代码分析 20164313 杜桂鑫
1.实践目标 1.1是监控你自己系统的运行状态,看有没有可疑的程序在运行. 1.2是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分析工具尽量使用原生指令或sysinternals,sys ...