每日一算法
努力成就未来
生命不止!奋斗不息!
展开
-
求数组中重复的数字
package com.banban.CeShi;import java.util.*;/** * @author :zhangpengzhan * @date :Created in 2019/3/29 16:52 * @name :FindReNumber * * 找出数组中任意一个重复的数字: * 在长度为n数组里,元素范围均在0~n-1里,有些元素是重复的,...原创 2019-03-29 19:42:44 · 383 阅读 · 0 评论 -
二维数组查找数字
题目在一个二维数组里,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入一个二维数组和一个数字,判断数字是否在二维数组中。存在输出true,不存在输出false。package com.banban.CeShi;/** * @author :zhangpengzhan * @date :Created in 2019/4/1 16:53 ...原创 2019-04-01 17:36:34 · 318 阅读 · 0 评论 -
求两个有序数组合并后第K大值-leetcode
两个有序数组从小到大排列,取两个数组合并后第K大的元素,要求O(1)空间复杂度 如 a = {0, 1, 2, 4} b = {3, 5, 7} 第4大元素,返回3 方法一: 不考虑复杂度的情况下,首先想到的方法是一次从两个数组中选取较小的那个, 直到选取第k个,此种方法复杂度在O(k),代码如下 方法二: 基于k/2位数的二分思想 方法三...原创 2019-03-28 17:59:36 · 2274 阅读 · 1 评论 -
实现了min方法的栈
package com.banban.CeShi;import java.util.Stack;/** * 定义一个实现了min方法的栈,min方法返回当前栈最小元素。要求min,push,pop时间复杂度O(1) * 方法一: * 双栈实现:minstack栈存储最小值 * */public class MinStack { private Stac...原创 2019-03-28 18:09:18 · 345 阅读 · 0 评论 -
LRU缓存思想
package com.banban.CeShi;import java.util.HashMap;import java.util.LinkedHashMap;import java.util.Map;import java.util.Stack;/** * 实现一个长度为n的LRU缓存,即超出长度后,丢弃最少被使用的元素 * 方法一: * 使...原创 2019-03-28 18:12:59 · 223 阅读 · 0 评论 -
两个线程交叉打印,一个打印数字,一个打印小写字母,结果为a1b2...y25z26
package com.banban.CeShi;/** * 两个线程交叉打印,一个打印数字,一个打印小写字母,结果为a1b2...y25z26 * */public class ThreadPrint { private static Object lock = new Object(); private Thread th1 = new Thread(){...原创 2019-03-28 18:14:48 · 1781 阅读 · 3 评论 -
根据先序中序构建二叉树
输入二叉树的前序遍历和中序遍历,求后序遍历或者重构二叉树 例如:前序:1,2,4,7,3,5,6,8 中序:4,7,2,1,5,3,6,8 后序:7,4,2,5,8,6,3,1 方法1:如果需要重构再输出后序 步骤如下: 1.根据前序确定根节点就是第一个; 2.根据根节点在中序的位置确定左右子树 3.递归重...原创 2019-04-03 20:37:21 · 3064 阅读 · 1 评论