![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
刷题
文章平均质量分 66
力扣小男孩
菜鸟的进阶之路。
展开
-
leetcode第196场周赛
第一题签到题,不多说。easy水平。主要想记录第二三道题,第四道题功力尚浅,刷一段时间题之后再说。第二题:所有蚂蚁掉下来前的最后一刻有一块木板,长度为 n 个 单位 。一些蚂蚁在木板上移动,每只蚂蚁都以 每秒一个单位 的速度移动。其中,一部分蚂蚁向 左 移动,其他蚂蚁向 右 移动。当两只向 不同 方向移动的蚂蚁在某个点相遇时,它们会同时改变移动方向并继续移动。假设更改方向不会花费任何额外时间。而当蚂蚁在某一时刻 t 到达木板的一端时,它立即从木板上掉下来。给你一个整数 n 和两个整数数组原创 2020-07-05 22:35:09 · 783 阅读 · 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 · 86 阅读 · 0 评论 -
如何判断一个数是否为2的幂次方
最近在OJ上做题,遇到一道题,其中一个细节就是需要判断一个数是否为2的幂次方。初看似乎很简单,可我想来想去,竟然无甚好办法。最后我用一个笨办法解决了,那就是将2 4 8 16 32… …存到一个数组里,遍历一遍数组就知道了。但是这个办法着实不优美。下面介绍一个好办法 (n & n - 1) == 0 将2的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有...转载 2018-10-28 23:54:09 · 1019 阅读 · 0 评论 -
二叉树最大深度和最小深度
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。递归形式 /** *输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 */ public int RMaxDeepth(TreeNode head){ ...原创 2018-09-16 22:23:51 · 528 阅读 · 0 评论 -
记录一道题,这里是个盲点
A.for循环的话,很灵活,但是代码不够简洁.B.System.arraycopy()源码。可以看到是native方法:native关键字说明其修饰的方法是一个原生态方法,方法对应的实现不是在当前文件,而是在用其他语言(如C和C++)实现的文件中。 可以将native方法比作Java程序同C程序的接口。如果是复制一个一位数组,那么改变复制后的数组并不影响原数组。但是如果复制一个二维数组...转载 2018-09-03 22:55:07 · 186 阅读 · 0 评论 -
Java运算符及其优先级
尊重原创:(口诀)转自http://lasombra.iteye.com/blog/991662 今天看到《java编程思想》中的运算符优先级助记口诀,不过“Ulcer Addicts Really Like C A lot”在中文语境下不好记。我试着写一个口诀: 单目乘除为关系,逻辑三目后赋值。 单目:单目运算符+ –(负数) ++ -- 等 乘除:算数单目运算符* / % +...转载 2018-09-03 22:20:14 · 153 阅读 · 0 评论 -
B树与B+树学习笔记
一般情况下,我们所讨论的数据结构,都是处理在内存中的数据。因此考虑的都是内存中的运算时间复杂度。如果我们要操作的数据集非常大,达到内存已经没办法处理了怎么办呢?如数据库中的上千万条记录的数据表。硬盘中的上万个文件等。在这种情况下,对数据的处理需要不断从硬盘灯存储设备中调入或调出内存页面(页面调度算法)。一旦涉及到这样的外部存储设备。关于时间复杂度的计算就会发生变化,访问该集合元素的时间已经...原创 2018-09-02 23:40:21 · 210 阅读 · 0 评论 -
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 · 270 阅读 · 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 · 725 阅读 · 1 评论 -
每日一题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 · 217 阅读 · 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 · 409 阅读 · 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 · 135 阅读 · 0 评论 -
最短路径的问题----单源最短路径
算法老师在最短路径问题上讲了很多,在讲了贪心算法之后。紧接着讲最短路径,可以说是一脸懵逼。最近开始复习,总结一下。方法大约有这些。定义:最短路径即拥有最小权重的路径p;路径定义:p=<V0,V1,...,Vk>,其中当0<=i<k时,有(Vi,Vi+1)组成一条边。路径的权重:所有路径权重之和。加上权重的数学表示方式1.边存在权重的图:G(V,E,W),W是一个函数,作用于...原创 2018-07-09 21:13:22 · 8143 阅读 · 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 · 606 阅读 · 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 · 131 阅读 · 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 · 104 阅读 · 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 · 153 阅读 · 0 评论 -
动态规划
题目描述给定一个浮点数数组,任意取出数组中的若干个连续的数相乘,请找出其中乘积最大的子数组。例如,给定数组{-2,5,4,0,3,0.5,8,-1},则取出的最大乘积子数组为{3,0.5,8}。也就是说,在上述数组中,3,0.5,8这三个数是连续的,而且乘积最大的。分析与解法此最大连续乘积子数组与最大乘积子序列不同,因为最大乘积子序列不要求元素连续,而最大连续乘积子数组要求元素是连续的。解...原创 2018-11-03 19:07:33 · 268 阅读 · 0 评论 -
旋转数组的最小值
题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。其实一开始做这道题我是拒绝的,因为题目中直接一个求最小值的操作就可以通过的,所以,一直不想看具体怎么简化解答的。...原创 2019-02-27 20:22:18 · 210 阅读 · 0 评论 -
lc276 Integer to Word
一道比较难coding的题目。首先了解一下十进制数对应的数字具体读法。一般是3位一逗号,代表着不同的数量级别,比如1234567读作One Million Two Hundred Thirty Four Thousand Five Hundred Sixty Seven.后三位是567,即five hundred sixty seven,这个三位数在最终的表示中也是这样的一个形式。2...原创 2019-07-31 09:39:40 · 202 阅读 · 0 评论 -
paypal题目
约瑟夫环问题的变形, 主要是一个模拟的过程,考察点在于每次退出的人的序号是变化的。所以这一个问题较为简单。在面试或笔试过程中,属于一道签到题目,必须要求自己能够快速写出来。import java.util.Scanner;/** * Created by ql on 2019/6/24. */public class Algorithm { static boolean...原创 2019-06-24 23:02:18 · 254 阅读 · 0 评论 -
paypal 数字对生成树
一道特别考验语言功底的题目,首先它的输入与输出,对于我这种没有处理过复杂的输入,以及输出的渣渣来说,浪费了大量的时间,好在现在还稍微来得及,不怕不怕啦。紧接着,整个题目的要求也是比较复杂的,首先允许存在重复的数字对,也就是说,在输入的过程中,需要去重。若重复,则忽略。(具体实现过程中,使用一个edges的map表来去重的。)其次,顺序不唯一,同样的输入,打乱顺序后,会导致不同的输出...原创 2019-06-25 16:09:16 · 370 阅读 · 0 评论 -
从1到n的所有数相关问题
在学习过程中,遇到了两道题目。卡了自己一段时间,通过查阅资料,已经AC。下面贴一下这两道题目。这道题是计算1~n的所有数字中,1出现的个数。这道题目是剑指offer中比较难的一道题目。首先考虑在计算过程中,有一定规律,但是在具体的coding过程中,总不能加各种if条件句判断吧。所以通过查资料学习了这样一种解决该问题的方法:例如,n=abcde。首先,将n切分开来存放到数组之中。之后进...原创 2019-06-11 16:18:04 · 579 阅读 · 0 评论 -
剑指offer 机器人行走范围问题
class Solution { private static int res=0; private static int threshold=0; public int movingCount(int thresholds, int rows, int cols) { threshold=thresholds; //BFS思路 ...原创 2019-06-04 20:52:36 · 178 阅读 · 0 评论 -
矩阵中的路径
class Solution { public boolean hasPath(char[][] matrix, String str) { for(int i=0;i<matrix.length;i++){ for(int j=0;j<matrix[i].length;j++){ if(dfs(matr...原创 2019-06-03 22:17:58 · 130 阅读 · 0 评论 -
剑指offer 正则表达式匹配问题
请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配。这道题目感觉比较难。一遇到字符串问题就害怕。结合何老师的课本讲解,以及网上的其他资料进行了相应的学...原创 2019-06-05 23:24:12 · 393 阅读 · 0 评论 -
获得字符串的最小字典序
写个博客,纪念这逝去的一晚上,要炸了。有一天,达达捡了一条价值连城的宝石项链,但是,一个严重的问题是,他并不知道项链的主人是谁!在得知此事后,很多人向达达发来了很多邮件,都说项链是自己的,要求他归还(显然其中最多只有一个人说了真话)。达达要求每个人都写了一段关于自己项链的描述: 项链上的宝石用数字0至9来标示。一个对于项链的表示就是从项链的某个宝石开始,顺指针绕一圈,沿途记下经过的...原创 2019-05-07 22:48:55 · 1286 阅读 · 0 评论 -
360笔试leetcode原题665
给定一个长度为n的整数数组,你的任务是判断在最多改变1个元素的情况下,该数组能否变成一个非递减数列。我们是这样定义一个非递减数列的:对于数组中所有的i(0<= i < n),满足array[i] <= array[i + 1]。该题目属于leetcode中easy的题目。首先,题目中要求令数组变成非递减数列,即array[i] <= a...原创 2019-04-16 20:36:12 · 480 阅读 · 0 评论 -
剪绳子问题and leetcode343
参考剑指offer上的剪绳子问题,其中动态规划的方法有一部分我不是很理解,这里引用一下别人的部分代码。public class Test { public static void main(String[] args) { int len = 10; System.out.println(maxLen(len)); } /** ...原创 2019-04-12 23:28:49 · 495 阅读 · 2 评论 -
leetcode周赛128期真香
这一道题,其实还是蛮简单的。我直接用暴力的方式写的,先得到N的二进制原码表示,转化为反码之后,再使用我们简单的计算二进制真值的方法来计算即可。class Solution { public int bitwiseComplement(int N) { String result=getBit(N); return getInt(result); ...原创 2019-03-25 23:36:23 · 133 阅读 · 0 评论 -
20190324leetcode周赛
首先,原谅我这个菜狗子用的中文版。紧接着上题目。这是一道easy的题目。一开始,我还是很懵逼的。用两个指针,分别指向两端,向中间移动。对应的左边和与右边和相等时,查看中间部分的情况即可。很显然结果是没通过。所以当时就简单暴力了一下。哎,暴力出真知啊。class Solution { public boolean canThreePartsEqualSum(int[] A...原创 2019-03-25 00:04:13 · 412 阅读 · 0 评论 -
leetcode236
236.Lowest Common Ancestor of a Binary Tree寻找二叉树中给定两个节点的公共祖先。很好的一道题目,有助于我们理解递归的操作,一般情况下,二叉树的问题基本都是使用递归来解决的。一开始并不明白真实的递归操作,但是自己画一个二叉树,然后仔细想一想具体的操作流畅就可以明白了,还是得多练习。public TreeNode lowestCommonAnc...原创 2019-03-04 20:22:52 · 353 阅读 · 0 评论 -
lc50 pow(x,n)
问题可以采用递归的形式求解,但是边界处理为易错点,好吧,承认处理了挺久的。递归解法:class Solution { public double myPow(double x, int n) { if (n==0) { return 1.0; } if(n == Integer.MIN_VALUE){ ...原创 2019-03-06 19:54:46 · 160 阅读 · 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 · 148 阅读 · 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 · 140 阅读 · 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 · 144 阅读 · 0 评论 -
每日一题6.25
迪杰斯特拉算法:一个很神奇的算法,这一算法解决了有向加权图的最短路径问题,该算法的条件是该图所有边的权值非负,即对于每条边(u,v),w(u,v)>=0.算法中设置了一节点集合S,从源节点r到集合S中节点的最终最短路径的权均已确定,并设置了最小优先队列,该队列包含所有属于V-S的节点(即这些节点尚未确定最短路径的权),且以d值为关键字排列各节点。class Dijkstra{ pub...原创 2018-06-29 23:43:30 · 170 阅读 · 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 · 107 阅读 · 0 评论 -
散列/哈希总结
哈希函数很强大,最近算法课老师讲了哈希函数的一系列应用。这里总结一下。原创 2018-05-27 21:28:49 · 450 阅读 · 0 评论 -
归并排序的应用
昨天总结了一下几种常用的排序算法,而且,在比较排序算法的结尾有一个小tips:堆排序和归并排序都是渐进最有的比较排序算法。今天在回顾算法导论的过程中发现,堆排序,快排,归并排序的应用很广泛,重要的不是这种排序的方式,而是这种排序的思想值得我们学习。归并排序思想的应用主要是递归+划分。实际应用有小和问题,逆序对问题。...原创 2018-05-22 23:17:55 · 968 阅读 · 0 评论