自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 剑指--连续子数组的最大和(分析)

剑指–连续子数组的最大和1,题目:2,思路:在循环数组中,用sum来标志当前元素是否加入到总和中。首先sum=0,i从0开始循环,若sum>0,则继续加,否则将其替换为新元素的值,,在接着循环。3,代码:class Solution { public int maxSubArray(int[] nums) { int max = nums[0]; ...

2020-04-29 18:11:32 85

原创 剑指--最小的k个数(分析)

剑指–最小的k个数(这个堆和快排要好好理解)1,题目:2,思路:方法一:直接对数组排序,输出前k个值即可方法二:使用堆:保持堆的大小为K,然后遍历数组中的数字,遍历的时候做如下判断:若目前堆的大小小于K,将当前数字放入堆中。否则判断当前数字与大根堆堆顶元素的大小关系,如果当前数字比大根堆堆顶还大,这个数就直接跳过;反之如果当前数字比大根堆堆顶小,先poll掉堆顶,再将该数字放...

2020-04-23 18:35:46 110

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

剑指–数组中出现次数超过一半的数字1,题目:2,思路:方法一:自己写的(暴力算法)就是循环计数,看看出现相同数字的是否超过数组长度的一般半,超过即找到返回即可。方法二:count的自加和自减就是在描述一种抵消关系,由于超过一半的出现次数,导致最后的target一定会是该值。用target记录上一次访问的值,count表明当前值出现的次数,如果下一个值和当前值相同那么count++;...

2020-04-22 18:43:12 101

原创 剑指--调整数组顺序使奇数位于偶数的前面

剑指–调整数组顺序使奇数位于偶数的前面1,题目:2,思路:方法一:在原数组中进行转换(双指针)一个指向数组的最右边的奇数,一个指向数组中的最左边的偶数,这样在原数组中进行转换方法二:就是比较笨拙的方法就是新建来两个数组,一个放奇数,一个放偶数,然后在把这两个数组赋值到原来的数组中进行覆盖。3,代码:方法一:在原数组中进行转换:class Solution { publi...

2020-04-22 18:13:41 103

原创 剑指--数值的整次方

剑指–数值的整次方1,题目:2,思路:方法一:二分法:根据指数的奇偶来判断相当于在递归中,若是偶数,则分成两个来整个的递归操作若是奇数,则分成偶数个递归操作再乘以一个基数。方法二:用二进制来算。3,代码:方法一:二分法class Solution { public double myPow(double x, int n) { if...

2020-04-22 16:57:26 88

原创 hashmap与concerrenthashmap的1.7和1.8区别

hashmap与concerrenthashmap的1.7和1.8区别参考自:https://blog.csdn.net/chenwendangding/article/details/99065623?utm_source=app

2020-04-22 14:23:27 251

原创 剑指--旋转数组的最小数字(分析)

剑指–旋转数组的最小数字1,题目:2,思路:方法一:暴力算法:就是循环,谁最小就返回谁方法二:二分法:就是比较numbers[m] 和 numbers[right]的大小来判断最小值在左边还是在右边若在左边就循环左边的数组,若在右边就循环右边的数组注意:这里在循环左边或者右边的数组时,最好用left++和right–来进行循环,这样有助于去除重复的元素。3,代码:方法一:暴力...

2020-04-15 14:29:35 66

原创 剑指--青蛙跳台阶问题

剑指–青蛙跳台阶问题1,题目:2,思路:和斐波那契数列数一样的,就是最后要取模(%1000000007)3,代码:class Solution { public int numWays(int n) { if(n == 0) return 1; if(n == 1) return 1; ...

2020-04-15 10:56:51 92

原创 剑指--斐波那契数列(分析)

剑指–斐波那契数列1,题目:2,思路:思路比较简单,关键的就是:result %= 1000000007。这里为什么:result %= 1000000007看下图:1000000007 是最小的十位质数。模1000000007,可以保证值永远在int的范围内。也就是不会出现溢出的情况。3,代码:class Solution { public int fib(int ...

2020-04-14 20:53:15 259

原创 剑指--替换空格(分析)

剑指–替换空格1,题目:2,思路:获得 s 的长度 length创建字符数组 array,其长度为 length * 3 初始化 size 为 0,size表示替换后的字符串的长度 从左到右遍历字符串 s 获得 s 的当前字符 c如果字符 c 是空格,则令 array[size] =‘%’,array[size + 1] = ‘2’,array[size + 2] ...

2020-04-14 14:45:29 86

原创 剑指--二维数组中的查找(分析)

剑指–二维数组中的查找1,题目:2,思路:如果当前位置元素比target小,则row++如果当前位置元素比target大,则col–如果相等,返回true如果越界了还没找到,说明不存在,返回false3,代码:class Solution { public boolean findNumberIn2DArray(int[][] matrix, int target) ...

2020-04-13 20:28:30 98

原创 leetcode(Array)--209 长度最小的子数组(分析)

leetcode(Array)–209 长度最小的子数组1,题目:2,思路:用滑动窗口:left为慢指针,right为快指针。当其和>s时,left慢指针右移,缩小窗口当其和<s时,right快指针右移,扩大窗口3,代码:class Solution { public int minSubArrayLen(int s, int[] nums) { ...

2020-04-13 13:54:04 76

原创 leetcode(Array)--189 旋转数组

leetcode(Array)–189 旋转数组1,题目:2,思路:方法一:在k>0的循环中,执行下面操作:(因为k等于几就执行下面操作几次)用i指向数组的最后,用一个临时变量temp保存最后这个元素其他前面的元素都往后移,最后将temp赋值给nums[0]方法二:别人写的:新new一个数组temp,找好逻辑对应关系temp[(i+k) % len] = nums[i...

2020-04-13 13:42:51 60

原创 leetcode(Array)--167 两数之和2-输入有序数组

leetcode(Array)–167 两数之和2-输入有序数组1,题目:2,思路:方法一:用目标值-一个数,求另一个数在数组中的位置(自己写的)(具体可以看代码中的标注)方法二:用两个left和right指针分别指向原数组的左右,用两个之和与target相比较,来移动left和right的位置3,代码:方法一:用目标值-一个数,求另一个数在数组中的位置(自己写的)class ...

2020-04-12 21:01:08 90

原创 leetcode(Array)--154 寻找旋转排序数组中的最小2

leetcode(Array)–154 寻找旋转排序数组中的最小21,题目:2,思路:方法一:暴力方法:也就是直接在循环中,谁最小就返回谁方法二:二分法:一个left指针指向最左边,一个right指针指向最右边, 先进行去重复操作(因为数组有重复元素)然后就用mid中间点来判断和nums[right]的值,来判断最小值在右边还是在左边,在哪边就循环哪边。3,代码:方法一:暴...

2020-04-12 20:35:23 80

原创 leetcode(Array)--153 寻找旋转排序数组中的最小

leetcode(Array)–153 寻找旋转排序数组中的最小1,题目:2,思路:方法一:暴力方法:就是直接循环,谁最小就返回谁方法二:二分法:(1)有序数组经过旋转,旋转完成后,前面肯定是大数组,后面是小的数组。如何判断取中点是在左边还是在右边呢?(2)如果中点的值大于右端的值,说明中点处在小数组中,right=mid(3)如果中间点的值小于右端的值,说明中间处在...

2020-04-12 14:04:27 74

原创 leetcode(Array)--108 将有序数组转换成二叉搜索

leetcode(Array)–108 将有序数组转换成二叉搜索1,题目:2,思路:以数组的中间点的元素值作为根节点建树,然后根节点的左子树和右子树中,分别再找根节点连建立子树,就这样依次循环。3,代码:class Solution { public TreeNode sortedArrayToBST(int[] nums) { return rec(nums,...

2020-04-12 13:35:32 103

原创 LeetCode(Array)--88 合并两个有序数组

LeetCode(Array)–88 合并两个有序数组1,题目:2,思路:在插入的过程中也执行排序。(1)原来两个数组已经排好序了,用i指向nums1的最高位,用j来指向nums2的最高位,k指向新数组(合并)的最高位。(2)用nums1[i]和nums2[j]来做比较,谁大谁插入新的数组中,并移动指针。。就这样循环即可(3)最后把一个数组剩的元素也都直接插入新数组中3,代码:...

2020-04-12 10:35:14 81

原创 leetcode(Array)--81 搜索旋转排序数组2

leetcode(Array)–81 搜索旋转排序数组21,题目:2,思路:方法一:简单暴力法(很直观的循环来做) 就是直接循环看看有没有nums[i]== target,有就返回true,没有就false方法二:二分法 这个思路也是比较简单,和之前的二分法一样:有一点需要说明就是要记得去重复。3,代码:方法一:class Solution { public boole...

2020-04-11 22:09:39 57

原创 leetcode(Array)--80 删除排序数组中的重复项2

leetcode(Array)–80 删除排序数组中的重复项21,题目:2,思路:(1),i从2开始遍历数组,index为指向要覆盖的元素的位置(2),当Nums[i] !=nums[index-2],就将nums[index++]=nums[i],否则,说明有超过2个值是一样的,这时候index就不动(因为index是指向被覆盖的元素的位置)只移动i(3)当Nums[i]==num...

2020-04-11 21:26:42 79

原创 leetcode(Array)--34 在排序数组中查找元素的第一个和最后一个位置

leetcode(Array)–34 在排序数组中查找元素的第一个和最后一个位置1,题目:2,思路:(1)、利用二分法,先找到中间值mid对应的值,若nums[mid] == target,则利用循环向左和向右找出最左的target和最右的target(2),若nums[mid]!=target,则target的值不是在左边数组里就是在右边的数组里,再用if条件找出最左和最右的targ...

2020-04-11 20:55:31 99

原创 leetcode(Array)--33 搜索旋转排序数组

leetcode(Array)–33 搜索旋转排序数组1,题目:2,思路:使用二分法。在循环中来循环操作:如下:(1)如果中间数的值<最右边数的值,则表示右半段是有序的;(2)如果中间数的值>最右边数的值,则表示左 半段是有序的;(3)只要我们在有序的半段里首尾来个数对应的值来判断目标值是否在这一区域内,这样就可以确定保留哪半边了3,代码:class Solut...

2020-04-11 13:53:22 83

原创 leetcode(Array)--26 删除排序数组中的重复项

leetcode(Array)–26删除排序数组中的重复项1,题目:2,思路:(1)数组完成排序后,我们可以放置两个指针i和j,其中i是慢指针,j是快指针,只要nums[i] == nums[j],我们就增加j以跳过重复项(2)当nums[i] != nums[j]时,跳过重复项的运行已经结束,所以必须把nums[j]的值复制到nums[i++](3)接着重复相同的过程,直到达到数...

2020-04-11 13:28:25 66

原创 leetcode(array)--16 最接近的三数之和

leetcode(array)–16最接近的三数之和1,题目:2,思路:(1)在数组中进行遍历,没遍历一个值利用其下标i,形成一个固定值nums[i](2)start=i+1,end=nums.length,利用循环进行指针的移动(3)利用nums[i]+nums[start]+nums[end]这样为三个数之和来个targrt进行比较,看看哪个和 离target最接近(4)若和&...

2020-04-10 21:52:04 97

原创 leetcode(Array)--209 长度最小的子数组

**leetcode(Array)–209 长度最小的子数组**1,题目:2,思路:当输出或比较结果在原数组结构中是连续排列的时候,可以使用滑动窗口算法求解。----将两个指针比作一个窗口,通过移动指针的位置改变窗口的大小,观察窗口中元素是否符合题意。(1)初始窗口中只有数组开头的一个元素(2)当窗口中的元素小于目标值,右指针向右移,扩大窗口(3)当窗口中的元素大于目标值,比较...

2020-04-10 21:13:28 107

空空如也

空空如也

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

TA关注的人

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