算法训练计划
文章平均质量分 59
offer,offer在哪里
力扣小男孩
菜鸟的进阶之路。
展开
-
leetcode第196场周赛
第一题签到题,不多说。easy水平。主要想记录第二三道题,第四道题功力尚浅,刷一段时间题之后再说。第二题:所有蚂蚁掉下来前的最后一刻有一块木板,长度为 n 个 单位 。一些蚂蚁在木板上移动,每只蚂蚁都以 每秒一个单位 的速度移动。其中,一部分蚂蚁向 左 移动,其他蚂蚁向 右 移动。当两只向 不同 方向移动的蚂蚁在某个点相遇时,它们会同时改变移动方向并继续移动。假设更改方向不会花费任何额外时间。而当蚂蚁在某一时刻 t 到达木板的一端时,它立即从木板上掉下来。给你一个整数 n 和两个整数数组原创 2020-07-05 22:35:09 · 807 阅读 · 0 评论 -
leetcode236
236.Lowest Common Ancestor of a Binary Tree寻找二叉树中给定两个节点的公共祖先。很好的一道题目,有助于我们理解递归的操作,一般情况下,二叉树的问题基本都是使用递归来解决的。一开始并不明白真实的递归操作,但是自己画一个二叉树,然后仔细想一想具体的操作流畅就可以明白了,还是得多练习。public TreeNode lowestCommonAnc...原创 2019-03-04 20:22:52 · 382 阅读 · 0 评论 -
leetcode15 three sum
import java.util.*;class Solution { public List<List<Integer>> threeSum(int[] sum) { List<List<Integer>> result=new LinkedList<>(); if (sum==null||s...原创 2019-03-03 17:07:04 · 173 阅读 · 0 评论 -
滑动窗口最大值
题目:给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个:{[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,...原创 2019-02-28 21:26:07 · 90 阅读 · 0 评论 -
旋转数组的最小值
题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。其实一开始做这道题我是拒绝的,因为题目中直接一个求最小值的操作就可以通过的,所以,一直不想看具体怎么简化解答的。...原创 2019-02-27 20:22:18 · 219 阅读 · 0 评论 -
二叉树遍历总结
这里只是整理好了代码。import java.util.Stack;/** * Created by ql on 2018/7/10. */class node{ public int value; public node left; public node right; public void node(int data){ this.v...原创 2018-07-10 17:16:02 · 431 阅读 · 0 评论 -
双调数组的查找
题目要求:/** * Created by ql on 2018/7/15. * 双调函数 * An array is bitonic if it consists of a strictly increasing sequence of keys immediately followed by * a strictly decreasing sequence of keys * Des...原创 2018-07-15 18:14:00 · 740 阅读 · 1 评论 -
leetcode 232两个栈模拟一个队列
原题:Implement the following operations of a queue using stacks.push(x) -- Push element x to the back of queue.pop() -- Removes the element from in front of queue.peek() -- Get the front element....原创 2018-09-04 12:34:10 · 295 阅读 · 0 评论 -
股票最大收益问题+最大子数组之和问题
最近在复习算法考试,往年题目中有一些题目自己是之前不会的,整理一下,算是学习了。题目1:Given an array A[0...n-1]of numbers,the problem is to find 0<=i<=j<n,such that A[j]-A[i] is maximized(gain)Story:You learned what the stock price w...原创 2018-07-01 23:37:16 · 626 阅读 · 0 评论 -
每日一题6.25
迪杰斯特拉算法:一个很神奇的算法,这一算法解决了有向加权图的最短路径问题,该算法的条件是该图所有边的权值非负,即对于每条边(u,v),w(u,v)>=0.算法中设置了一节点集合S,从源节点r到集合S中节点的最终最短路径的权均已确定,并设置了最小优先队列,该队列包含所有属于V-S的节点(即这些节点尚未确定最短路径的权),且以d值为关键字排列各节点。class Dijkstra{ pub...原创 2018-06-29 23:43:30 · 180 阅读 · 0 评论 -
每日一题6.26
递归问题中的汉诺塔问题:public static void hanoi(int n){ if (n>0){ func(n,"left","mid","right"); }}public static void func(int n,String from,String mid,String to){ if (n==1)System.out.pri...原创 2018-06-29 23:51:27 · 150 阅读 · 0 评论 -
每日一题6.27
问题:Given an array nums and a value val, remove all instances of that value in-place and return the new length.Do not allocate extra space for another array, you must do this by modifying the input arr...原创 2018-07-01 00:01:15 · 145 阅读 · 0 评论 -
每日一题6.28
问题:Given a sorted array nums, remove the duplicates in-place such that each element appear only once and return the new length.Do not allocate extra space for another array, you must do this by modify...原创 2018-07-01 00:05:14 · 158 阅读 · 0 评论 -
每日一题6.29
问题:Given a sorted array nums, remove the duplicates in-place such that duplicates appeared at most twice and return the new length.Do not allocate extra space for another array, you must do this by mo...原创 2018-07-01 00:12:15 · 109 阅读 · 0 评论 -
每日一题6.30(准备看书了)
问题:Given an array with n objects colored red, white or blue, sort them in-place so that objects of the same color are adjacent, with the colors in the order red, white and blue.荷兰国旗问题。可以使用三路快排的分治思想,同样...原创 2018-07-01 00:15:37 · 134 阅读 · 0 评论 -
6.25每日一题
总结了一下图的BFS和DFS,感觉有一些意义。贴出来吧class Graph { //创建图的类 public HashMap<Integer,Node> nodes;//点集 public HashSet<Edge>edges;//边集 public Graph(){ nodes=new HashMap<Integer...原创 2018-06-29 21:12:10 · 162 阅读 · 0 评论 -
每日一题6.19
输入一个链表的头结点,从尾到头反过来打印每个节点的值看到题目第一反应是用栈,将节点一个一个压入栈中,然后弹栈打印节点即可,难度不大,代码如下:public ArrayList<Integer> printListFromTailToHead(ListNode listNode){ Stack<ListNode> stack = new Stack<>()...原创 2018-06-21 22:57:55 · 110 阅读 · 0 评论 -
每日一题6.20
请实现一个函数,把字符串中的每个空格替换成”%20”。例如输入 “We are happy.”,输出”We%20are%20happy.”。这道题是针对 C++ 出的,对于 Java来说相对简单,用一个 StringBuiler 或者 StringBuffer 就可以了。不过这两个之间有略微的差别,StringBuiler是非线程安全的,多线程环境下会出现问题,但效率更高,StringBuffer...原创 2018-06-21 22:59:41 · 100 阅读 · 0 评论 -
每日一题6.21
leetcode23Given an array nums, write a function to move all 0's to the end of it while maintaining the relative order of the non-zero elements.Example:Input: [0,1,0,3,12]Output: [1,3,12,0,0]Note:You ...原创 2018-06-27 00:13:18 · 141 阅读 · 0 评论 -
每日一题6.22
Problem:Consider the following problem:given an array A[1...n]of distinct integers,and a number 1<=k<=n,find any one of the k largest elements in A.For example,if k=2,it is ok to return the larg...原创 2018-06-29 10:26:31 · 227 阅读 · 0 评论 -
每日一题6.23
Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊ n/2 ⌋ times.You may assume that the array is non-empty and the majority element always...原创 2018-06-29 10:52:38 · 116 阅读 · 0 评论 -
每日一题6.24
Describe a O(nlgn)-time algorithm that,given a set S of n integers and another integer x,determines whether or not there exist two elements in S whose sum is exactly x.类似于TwoSum类的问题,这里只是让返回是否存在二者之和恰好是...原创 2018-06-29 12:17:44 · 298 阅读 · 0 评论 -
每日一题6.14
题目:汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!其实这就是一个左移字符串的问题。一般左移或者右移问题的解决方法是字符串翻转。这里将0~k-2位的字符串翻...原创 2018-06-18 16:29:09 · 215 阅读 · 0 评论 -
每日一题6.15
题目:公司最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?思路:这是字符串翻转问题。我的...原创 2018-06-18 16:37:44 · 98 阅读 · 0 评论 -
每日一题6.16
题目:LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子.....LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12,K为13...原创 2018-06-18 16:48:29 · 135 阅读 · 0 评论 -
每日一题6.17
题目:每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0...m-1报数....这样下去....直...原创 2018-06-18 16:55:09 · 713 阅读 · 0 评论 -
每日一题6.18
题目:求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。很骚的题目有木有,首先高斯公式是使用乘法和除法的,所以不能用,且一系列的循环语句都不让用。三目运算也不让用。好吧,我可以选择递归对吧,递归总要有一个递归结束的条件对吧。但是不让用if判断。那么可以用计算机中的逻辑与运算,利用它的短路的特性实现0&...原创 2018-06-18 17:06:50 · 168 阅读 · 0 评论 -
每日一题6.11
题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。思路:一开始我思考的是用Map的特色,记录。但是总想看看大腿们有什么令人出乎意料的想法,确实,大佬就是大佬。大佬思路如下:/*考虑过程: 首先我们考虑这个问题的一个简单版本:一个数组里除了一个数字之外,其他的数字都出现了两次。请写程序找出这个只出现一次的数字。 这个题目的突破口在哪里?题目为什么要...原创 2018-06-13 19:01:20 · 95 阅读 · 0 评论 -
每日一题6.12
今天准备把所有的博文一口气补完。最近准备大作业。确实有点忙,加上有点贪玩,这就尴尬了。题目:输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。这里考察的点让我想起了leetcode中的twosum问题,只不过这一道题目要求有所提升。其实思路还是蛮简单的。附上我笨重的代码。import java.util.*;publi...原创 2018-06-17 11:39:10 · 138 阅读 · 1 评论 -
每日一题6.13
手动@小明同学,你咋那么多事呢。问题:小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!输出要求:输出所有...原创 2018-06-17 12:04:41 · 140 阅读 · 0 评论 -
每日一题6.5
今天的算法题目如下:原创 2018-06-06 23:45:03 · 130 阅读 · 0 评论 -
每日一题6.6
今天刷题内容:原创 2018-06-07 00:57:10 · 97 阅读 · 0 评论 -
每日一题6.7
题目描述:美团在吃喝玩乐等很多方面都给大家提供了便利。最近又增加了一项新业务:小象生鲜。这是新零售超市,你既可以在线下超市门店选购生鲜食品,也可以在手机App上下单,最快30分钟就配送到家。 新店开张免不了大优惠。我们要在小象生鲜超市里采购n个物品,每个物品价格为ai,有一些物品可以选择八折优惠(称为特价优惠)。 有m种满减优惠方式,满减优惠方式只有在所有物品都不选择特价优惠时才能使用,且最多只可...原创 2018-06-07 22:58:25 · 202 阅读 · 0 评论 -
每日一题6.8
统计一个数字在排序数组中出现的次数。思路:基于二分查找复杂度为 O(logn);二分查找开始位置,二分查找结尾位置,做差。个人感觉考察点为二分查找的灵活运用。public class Solution { public int GetNumberOfK(int[] array, int k) { int firstK=getFirstK(array,k,0,array...原创 2018-06-12 23:39:14 · 113 阅读 · 0 评论 -
每日一题6.9
在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置思路:借助哈希表,但是空间复杂度为 O(1),时间复杂度为 O(n);需要深入理解map,string的各种函数。import java.util.*;public class Solution { public int FirstNotRepeatingChar(Str...原创 2018-06-12 23:41:57 · 95 阅读 · 0 评论 -
每日一题6.10
近来一直在忙,每天做了题,没有及时更新博客。6.10的题目是与平衡二叉树有关的。题目:输入一棵二叉树,判断该二叉树是否是平衡二叉树。首先平衡二叉树是二叉搜索树的一种,中序遍历呈现出从小到大的排列。平衡二叉树是二叉搜索树的一种表达上的优化可以用最低的高度建造相应的二叉搜索树,其次平衡二叉树的一个特点就是左子树的高度与右子树的高度之差的绝对值是不大于1的。利用这个思想,我们依次获取左右子树的高度,判定...原创 2018-06-13 12:46:17 · 194 阅读 · 0 评论