自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 收藏
  • 关注

原创 剑指14(有序数组中某元素出现的个数)

有序数组中某元素出现的个数(java) 题目描述: 统计一个数字在排序数组中出现的次数。 样例: 输入:nums[5,7,7,8,8,10],target = 8 输出:2 输入:nums[5,7,7,8,8,10],target = 6 输出:0 题解: 因为数组是排序的,所以target元素位置一定是连续的。 一:双指针,慢指针找到第一个target元素,就停在此处,快指针继续向前走,直到不是target的元素出现。两指针的差值就是target元素的个数。 代码: public static int s

2020-08-21 19:49:09 435

原创 剑指13(将字符串转换为整数)

将字符串转换为整数(java) 题目描述: 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数; 数值为0或者字符串不是一个合法的数值(第一个非空格字符不是一个有效整数字符、字符串为空、字符串仅包含空白字符)则返回0; 要求数值范围在[-231,231-1],超出此范围的直接返回-231或231. 样例: 输入:“42” 输出:42 输入:" -42" 输出:-42 输入:“4293 with words” 输出:4293 输入:“words with 4293” 输出:0 输入:"-98

2020-08-14 10:00:20 209

原创 剑指12(第一个只出现一次的字符)

第一个只出现一次的字符(java) 题目描述: 在字符串s中找出第一个只出现一次的字符。如果没有,返回一个单空格。s只包含小写字母。 样例: 输入:s = “abaccdeff” 输出:‘b’ 输入:s = “” 输出:’ ’ 输入:s = “abbacdcdff” 输出:’ ’ 题解: “只出现一次”说明与前有关与后有关,所以要掌握整个字符串的状态,可以把字符串中的字符存进哈希表,键为字符,值为出现的次数。出现的次数只有两种状态:一次或者多次。出现多次的就不是我们要的,可以以false代之;如此,出现一次

2020-08-13 11:23:04 182

原创 将整数n划分为k份

将整数n划分为k份(java) 题目描述: 给出2个整数n和k,如果将n分为k份,每份均不能为0,一共有多少种分法?注:仅顺序不同视为同一种分法。 题解: 我们发现k为2时最易计算,将任何数一分为二的分法有(n-1)种,排除顺序不同数字相同的情况就是(n-1)/2种。但是计算机整数相除忽略小数点后的数字所以可写为n/2; 所以采用递归,我们把递归栈的底部放到k=2上。比如,k=3,要分成三份,我们就先把n分成两份,再把其中一份分成两份就变成三分了,以此类推。 如此,写成了这个亚子: 在这里插入代码片 .

2020-08-03 21:21:08 3641

原创 剑指11(最小的k个数)

最小的k个数(java) 题目描述: 输入整数数组arrs,找出其中最小的k个数。限制:0<=k<=arr.length<=10000,0<=arr[i]<=10000 样例: 输入:arr=[3,2,1],k=2 输出:[1,2]或[2,1] 题解: 解一:自己的笨方法,利用选择排序只排序处前k个元素,并把这k个元素放在结果数组中。 代码: public static int[] getLeastNumbers(int[] arrs, int k) { //数组中最小的k个

2020-06-24 15:58:03 112

原创 LeetCode简单题19(最后一个单词的长度)

最后一个单词的长度(java) 题目描述: 给定一个仅包含大小写字母和空格’ '的字符串s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。 如果不存在最后一个单词,则返回0. 说明:一个单词是指仅由字母组成、不包含任何空格字符串的最大子字符串。 样例: 输入:“hello world” 输出:5 输入:"hello world " 输出:5 题解: 看到...

2020-05-07 21:03:10 198

原创 剑指10(顺时针打印矩阵)

顺时针打印矩阵(java) 题目描述: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 样例: 输入:matrix=[[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5] 题解: 设置边界条件,就像推箱子,推不动了就换方向,按照向右->向下->向左->向上的循环 。l,t,r,b分别代表左,上,右,下的边界。具体过程如图解...

2020-04-30 10:49:51 127

原创 剑指9(调整数组顺序使奇数位于偶数前面)

调整数组顺序使奇数位于偶数前面(java) 题目描述: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。 1<=nums.length<=50000 1<=nums[i]<=10000 样例: 输入:nums = [1,2,3,4] 输出:[1,3,2,4] 注:[3,1,2,4]也是正确答案之一。 题解:...

2020-04-28 13:29:27 102

原创 剑指8(青蛙跳台阶问题)

青蛙跳台阶问题(java) 题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个n级台阶总共有多少种跳法?(答案需要取模1e9+7) 示例: 输入:n=2 输出:2 输入:n=7 输出:21 题解: 算出前几项 f(1)=1, f(2)=2, f(3)=3, f(4)=5, f(5)=8, f(6)=13… 可以看出规律,当n>2时,f(n)=f(n-1)+f(n-...

2020-04-25 15:36:01 113

原创 剑指7(数组中出现次数超过一半的数字)

数组中出现次数超过一半的数字(java三种解法) 题目描述: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。 题解: 解一: 利用额外空间。创建一个map函数记录数组中每个元素和它出现的次数。 代码: public static int majorityElement(int[] nums) { //哈希表法 Hash...

2020-04-19 16:26:09 108

原创 剑指6(链表中倒数第k个节点)

链表中倒数第k个节点(java) 题目描述: 输入一个链表,输出该链表中到数第k个节点。 样例: 给定一个链表:1->2->3->4->5,和k = 2 返回链表:4->5 题解: 双指针,两个指针间保持相隔k个节点,同时向后移动,这样,当前一个指针遍历到链表结尾时,后一个指针到链表结尾的距离刚好是k,也就是倒数第k个。 也相当于一个长度为k的窗口,在链表上滑动 代码...

2020-04-16 11:42:10 97

原创 剑指5(旋转数组的最小数字)

旋转数组的最小数字(java) 题目描述: 把一个数组最开的的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增(非严格)排序的数组的一个旋转,输出旋转数组的最小元素。跟第一个错误的版本题目类似。 样例: 输入:[3,4,5,1,2] 输出:1 输入:[2,2,2,0,1] 输出:0 代码: //旋转数组的最小数字 public static int minArray(int[] nu...

2020-04-15 22:29:56 110

原创 剑指3(删除链表节点),4(打印1到最大的n位数)

删除链表节点(java) 打印从1到最大的n位数(java) 题目描述: 输入数字n,按顺序打印出从1到最大的n位十进制数,用返回一个整数列表来代替打印,且n为正整数 题解: 先找到最大的n位数是什么,可用Math的pow(x,y)方法(返回x的y次幂),再循环打印。 代码: ...

2020-04-14 21:43:35 123

原创 LeetCode简单题18(最大子序和)

最大子序和(java) 题目描述: 给定一个数组nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 样例: 输入:[-2,1,-3,4,-1,2,1,-5,4] 输出:6 说明:连续子数组[4,-1,2,1]的和最大,为6 题解: 一个比较好理解的:贪心算法,一次遍历,遍历过程中维持每一次的最大子序和,遍历结束时就是全局的最大子序和。 代码: //最大子序和 p...

2020-04-13 22:05:25 139

原创 经典查找算法总结(上)

查找算法们(java) 顺序查找 二分查找 插值查找 斐波那契查找 数表查找 ...

2020-04-12 22:54:08 392

原创 移动研发岗一面面经

4月11日上午10:00–10:40 百度移动研发岗一面,视频面试,第一次,很紧张 小哥哥人很好,该温柔温柔,该挂还得挂。 流程: 1.自我介绍 2.说一下java内存分布,垃圾回收机制 3.了解GC吗 4.Android四大组件 5.activity四种启动模式,内容讲一下 6.activity生命周期 7.假如APP切到后台了,activity是什么状态?如果task栈溢出,内存阻塞,会发生什...

2020-04-12 14:17:06 677

原创 剑指2(反转单链表)

反转单链表 (java) 题目描述: 反转一个单链表 样例: 输入:1->2->3->4->5->null 输出:5->4->3->2->1->null 题解: **方法一:**迭代(双指针) 设置两个相邻指针,一个在前,一个在后,进行反转 反转完成后,两个指针同时后移一位继续反转 遍历一遍就可全部反转完成 代码: public stat...

2020-04-12 13:16:50 141

原创 LeetCode简单题17(从尾到头打印链表)

从尾到头打印链表(java) 题目描述: 输入一个链表的头结点,从尾到头反过来返回每个节点的值(用数组返回)。 限制:0<=链表长度<=10000 样例: 输入:head = [1,3,2] 输出:[2,3,1] 题解: 用一个ArrayList数组存放链表每个节点对应的值,再把ArrayList数组反转存放在int数组里。 代码: /** * Definition for sing...

2020-04-09 21:42:24 120

原创 剑指1(二维数组中的查找)

二维数组中的查找(java) 题目描述: 在一个n*m的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 限制:0 <= n <= 1000;0 <= m <= 1000 样例: 现有矩阵matrix如下: { {1, 4, 7, 11, 15}, ...

2020-04-08 23:48:47 103

原创 LeetCode简单题16(外观数列)

外观数列(java) 题目描述: 外观数列是一个整数数列,从数字1开始,序列中的每一项都是对前一项的描述。前五项如下: 1 11 21 1211 111221 1被读作“one1”,故第二项:11 11被读作“two1”,故第三项:21 21被读作“one2one1”,故第四项:1211 … 给定一个正整数n(1<=n<=30),输出外观数列的第n项。 样例: 输入:1 输出:“1...

2020-04-07 15:47:51 139

原创 LeetCode简单题15(删除重复元素)

删除重复元素(java) 题目描述: 给你一个数组nums和一个值val,你需要在原地移除所有数值等于val的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用O(1)的空间复杂度并原地修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 样例: 给定nums = [3,2,2,3],val = 3 函数应该返回新的长度2,病区nums中的前两个元素均为...

2020-04-06 23:01:16 271

原创 LeetCode简单题14(合并连两个排序链表)

合并连两个排序链表(java) 题目描述: 将两个升序链表合并为一个新的链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 样例: 输入:1->2->4 1->3->4 输出:1->1->2->3->4->4 题解: 这种方法我称之为穿针引线,定义一个节点dome给新链表一个开头。维护一个指针head相当于针,然后把两个链表连接起...

2020-04-06 15:43:55 140

原创 LeetCode简单题13(实现strStr())

实现strStr() (java) 题目描述: 实现strStr()函数,给定一个haystack字符串 和一个needle字符串,在haystack字符串中找出needle字符串出现的第一个位置(从0开始)。如果不存在,则返回-1. *说明:*当needle是空字符串时,我们应当返回0.这与c语言的strStr()以及java的indexOf()定义相符。 样例: 输入:haystack = “...

2020-04-05 23:31:12 229

原创 LeetCode中等题1(无重复字符的最长子串)

无重复字符的最长子串(java) 题目描述: 给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。 样例: 输入:“abcabcbb” 输出:3 *说明:*最长子串是"abc"长度为3 输入:“bbbb” 输出:1 *说明:*最长子串是"b"长度为1 输入:“pwwkew” 输出:3 *说明:*最长子串是"wke"长度为3 题解: 使用滑动窗口,窗口中就是动态的最长子串。用start和en...

2020-04-04 14:38:35 81

原创 LeetCode简单题12(删除排序数组中的重复数)

删除排序数组中的重复数(java) 题目描述: 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组,并在使用O(1)额外空间的条件下完成。 示例: 给定数组 nums = [1,1,2] 函数应该返回新的长度2,并原数组的前两个元素被修改为1,2. 不需要考虑数组中超出新长度后面的元素。 题解: 双指...

2020-04-03 11:30:11 144

原创 LeetCode简单题11(第一个错误的版本)

第一个错误的版本(java) 题目描述: 假如你是产品经理,带领团队开发一个产品,但是这个产品的最新一版没有通过质量检测,现在要找出是从哪一版开始出错。因为每一版都是在上一版的基础上进行的,所以,某一版出错了他之后的版本就都出错了。 已经实现了一个接口,可用它判断版本是否出错。 样例: 输入版本数5和开始出错的版本号4, 调用 isBadVersion(3) -> false 调用 isBa...

2020-04-02 12:38:56 121

原创 LeetCode简单题10(搜索插入位置)

搜索插入位置(java) 题目描述: 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。可假设数组中无重复元素。 样例: 输入:[1,3,5] 3 输出:1 输入:[1,4] 3 输出:1 输入:[1] 1 输出:0 题解: 看起来,因为是排好序的,遍历一遍就可以找出被插入的位置。。可是写出来发现,遍历只能解决一般问...

2020-04-01 21:09:16 136

原创 美团斗鱼百度笔试概录

3月26日,美团点评笔试(测开岗) 人生第一次的笔试,本来19号就要参加的,摄像头一直调不出来只好放弃。之后看了看那次的试题,太太太难了,暗喜,得亏我没参加不然肯定被虐的灰飞烟灭。 如愿被顺延到下一批26号,提前几天捣鼓了电脑终于摄像头给面子让我露脸儿了,然后乖乖等着被宰。终于日子到了,还是五道编程题。大概过了一遍,还比上次简单点,想着我至少能暴力解出来一道的,结果六十分钟过去了,一百分钟过去了,...

2020-03-31 15:17:33 400

原创 LeetCode简单题9(有效的括号)

有效的括号(java) 题目描述: 给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相应的右括号闭合; 左括号必须以正确的顺序闭合; 空字符串可视作有效字符串; 样例: 输入:"()" 输出:true 输入:"({})[]" 输出:true 输入:"{([)}]" 输出:false 题解: 此题用栈结构最合适,遇见左括...

2020-03-31 12:12:02 87

原创 LeetCode简单题8(最长公共前缀)

寻找字符串数组中的最长公共前缀(java) 题目描述: 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 “”。 题解: 在保证数组长度不为零的情况下,以strs[0]为基础寻找其他字符串与strs[0]的公共前缀. 定义一个变量result存储最长公共前缀,一开始假设最长公共前缀就是strs[0],随着循环比较,result随着已遍历的字符串的公共前缀而变化,最后...

2020-03-30 16:26:11 102

原创 LeetCode简单题7(罗马数字转整数)

罗马数字转整数(java) 题目描述: 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。他们对应的整数数值: I-1 ,V-5 ,X-10 ,L-50 ,C-100 ,D-500 ,M-1000。 例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。通常情况下,罗马数字中...

2020-03-30 11:54:25 232

原创 LeetCode简单题6(判断回文数)

回文数(java) 题目描述: 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 进阶:能不用转换成字符串的方式解决吗? 样例: 输入:12321 输出:true 输入:-1221 输出:false 输入:10 输出:false 题解: 解一: 使用了转换成字符串的方法,首先负数和尾数带零的整数都不是回文数,先判断排除。再处理其他的情况,转换为字符串循环前半...

2020-03-29 11:24:14 157

原创 LeetCode简单题5(买卖股票最佳时机)

买卖股票的最佳时机 题目描述: 样例: 题解: 都用了动态规划,保留最大利润 *解一:*笨方法 代码: public int maxProfit(int[] prices) { int max = 0; for(int i=0 ; i<prices.length ; i++){ for(int j=i+1 ; j<prices.l...

2020-03-28 16:50:02 91

原创 LeetCode简单题4(只出现一次的数)

只出现一次的数字 题目描述: 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 *说明:*你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 样例: 输入:[2,2,1] 输出:1 输入:[4,1,2,1,2] 输出:4 输入:[1] 输出:1 题解: 解一:(我自己的笨方法) 先排序,让相同的数两两相邻,再判断,如果没有相邻的数...

2020-03-27 10:23:24 107

原创 LeetCode简单题3(寻找重复数)

找出数组中重复的数 题目描述: 在一个长度为n的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。(限制2<=n<=100000) 请找出数组中任意一个重复的数字. 样例: 输入:[2,3,1,0,2,5,3] 输出:2或3 题解: 根据题中信息数组长度为n且数字都在0~n-1范围,可以知道不重复的数字...

2020-03-26 17:47:12 116

原创 LeetCode简单题2(整数反转)

整数反转(java) 题目描述: 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 注意: 假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。 样例: 输入:x=123 输出:x=321 输入:x=-123 输出:x=-321 题解: 首先想到了StringBbuffer类型...

2020-03-26 15:36:34 114

原创 LeetCode简单题1(两数之和)

LeetCode两数之和II(java) 题目描述:给定一个已经按升序排列的有效数组,找到两个数是的他们的和等于目标数,函数应该返回这两个下标值index1,index2。 样例: 输入:numbers=[2,7,11,15],target=9 输出:[1,2] 题解: 双指针解法 因为输入的数组是排好序的,可以利用它的顺序做文章,两数相加先从最小的数(left)和最大的数相加开始(right) ...

2020-03-26 12:23:37 145

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除