自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 59. 螺旋矩阵 II

59. 螺旋矩阵 II给你一个正整数n ,生成一个包含 1 到n2所有元素,且元素按顺时针顺序螺旋排列的n x n 正方形矩阵 matrix 。示例 1:输入:n = 3输出:[[1,2,3],[8,9,4],[7,6,5]]示例 2:public int[][] generateMatrix(int n) { //新建并初始化数组arr int[][] arr = new int[n][n]; int operate ...

2022-05-08 22:53:41 82

原创 滑动窗口类型:

209. 长度最小的子数组给定一个含有n个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组[numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。思路:* 快慢指针变形,滑动窗口理论:就是不断的调节子序列的起始位置和终止位置* 窗口就是 满足其和 ≥ s 的长度最小的 连续 子数组。* 窗口的起始位置如何移动:如果当前窗口的值大于s了,窗口就要向前...

2022-05-03 22:37:35 119

原创 977. 有序数组的平方-leetcode刷题

给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。示例 1:输入:nums = [-4,-1,0,3,10]输出:[0,1,9,16,100]解释:平方后,数组变为 [16,1,0,9,100]排序后,数组变为 [0,1,9,16,100]示例 2:输入:nums = [-7,-3,2,3,11]输出:[4,9,9,49,121]* 思路:由于该数组是带负数的非递减顺序排列,其元素的平方最大值只可能在两边,* .

2022-04-24 22:19:40 67

原创 leetcode刷题-移除元素问题

283. 移动零给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意,必须在不复制数组的情况下原地对数组进行操作。* 思路:覆盖法:在快慢指针消除所有元素的同时,将补足后续元素为0(其中元素数目为快慢指针下标之差)* 交换法:快指针每次遇到非零元素,就和慢指针交换一次,并且慢指针右移一位public class TwoHundredAndEightyThree { public void moveZeroes(int.

2022-04-19 22:25:05 170

原创 daily-leetcode

27. 移除元素给你一个数组 nums和一个值 val,你需要 原地 移除所有数值等于val的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。思路:* 1.数组的元素在内存地址中是连续的,不能单独删除数组中的某个元素,只能覆盖。* 2.双指针法(快慢指针法): 通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。cla...

2022-04-18 22:06:05 52

原创 daily-leetcode

34. 在排序数组中查找元素的第一个和最后一个位置给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。进阶:你可以设计并实现时间复杂度为 O(log n) 的算法解决此问题吗思路:首先考虑目标值出现的情况:* 1.目标值在于小于数组最左侧或大于最右侧,返回[-1, -1]* 2.目

2022-04-17 22:46:10 51

原创 daily-leetcode

704. 二分查找给定一个n个元素有序的(升序)整型数组nums 和一个目标值target ,写一个函数搜索nums中的 target,如果目标值存在返回下标,否则返回 -1。分析:前提是数组为有序数组且数组中无重复元素,导致元素下标唯一。考虑边界条件,对区间的定义没有想 清楚,区间的定义就是不变量class Solution { public int search(int[] nums, int target) { int low = 0; ...

2022-04-16 22:04:31 308

原创 【无标题】

Git:版本控制:多人开发必备分类:本地版本控制集中版本控制 SVN分布式版本控制 Git 每个人拥有全部的代码Git和SVN的主要区别:Git Bash:Unix和Linux风格的命令行,推荐Git CMD:Windows风格的命令行Git GUI:图形界面的git常见的linux命令:cd 改变目录cd … 回退到上一个目录pwd 显示当前目录路径clear 清屏reset 重新初始化终端ls 列出当前目录中的所有文件touch 新建一个文件rm 删除一个文件mk

2022-04-15 11:59:05 667

原创 2022/2/14

88. 合并两个有序数组给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。算法思想:可从数组

2022-02-14 22:25:32 49

原创 2022/2/12

11. 盛最多水的容器给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。解题思路:容器体积为 tmp=Math.min(height[low],height[high])*(high-low);采用双指针思想,从两边靠拢,在变化过程中high-low值在变小,要想tmp值..

2022-02-12 21:34:14 250

原创 2022/1/20

633. 平方数之和给定一个非负整数c,你要判断是否存在两个整数 a 和 b,使得a2 + b2 = c 。class Solution { public boolean judgeSquareSum(int c) { //双指针思想 long low=0,high=(int)Math.sqrt(c); while(low<=high){ long sum=low*low+high*high; ...

2022-01-20 22:09:00 385

原创 2022/1/19

148. 排序链表给你链表的头结点head,请将其按 升序 排列并返回 排序后的链表 。/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNod..

2022-01-19 21:55:45 146

原创 2022/1/14

回形数格式方阵的实现 从键盘输入一个整数(1~20) 则以该数字为矩阵的大小,把1,2,3…n*n 的数字按照顺时针螺旋的形式填入其中。 例如: 输入数字2,则程序输出: 1 2 4 3 输入数字3,则程序输出: 1 2 3 8 9 4 7 6 5 输入数字4, 则程序输出: 1 2 3 4 12 13.

2022-01-14 22:03:55 89

原创 2022/1/13

162. 寻找峰值峰值元素是指其值严格大于左右相邻值的元素。给你一个整数数组nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可。你可以假设nums[-1] = nums[n] = -∞ 。你必须实现时间复杂度为 O(log n) 的算法来解决此问题。class Solution { public int findPeakElement(int[] nums) { int low =0,high=nums...

2022-01-13 22:18:44 84

原创 2022/1/11

74. 搜索二维矩阵编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。 每行的第一个整数大于前一行的最后一个整数。 bool searchMatrix(int** matrix, int matrixSize, int* matrixColSize, int target) { const int m = matrixSize, n = *matrixColSize; int l = 0, r = m * n; w

2022-01-11 21:58:09 157

原创 2022/1/10

34. 在排序数组中查找元素的第一个和最后一个位置给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回[-1, -1]。进阶:你可以设计并实现时间复杂度为O(log n)的算法解决此问题吗? /** * Note: The returned array must be malloced, assume caller calls free(). */ //找target的左...

2022-01-10 21:55:36 53

原创 2022/1/8

367. 有效的完全平方数给定一个 正整数 num ,编写一个函数,如果 num 是一个完全平方数,则返回 true ,否则返回 false 。进阶:不要 使用任何内置的库函数,如 sqrt 。bool isPerfectSquare(int num){ if(num==1) return true; int low=1,high=num-1; while(low<=high){ int mid=(low+high)/2; .

2022-01-08 22:06:10 44

原创 2022/1/7

35. 搜索插入位置给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。int searchInsert(int* nums, int numsSize, int target){ int low=0,high=numsSize-1; int mid; if(nums[low]>=target) //考虑目标值小于所有数 return

2022-01-07 21:22:55 397

原创 2022/1/6

704. 二分查找给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。int search(int* nums, int numsSize, int target){ int low=0,high=numsSize-1,mid; if(numsSize<1) return -1; while(low<=high){ mid=(low+hi

2022-01-06 22:11:29 46

原创 2022/1/5

20. 有效的括号给定一个只包括 '(',')','{','}','[',']'的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 bool isValid(char * s){ int n=strlen(s); int t[n+1],top = 0; //建立一个栈,栈的长度为n+1 char x; int k=0; if(* s==')'||* s==']'||* s=='}') .

2022-01-05 22:09:28 127

原创 2022/1/3

14. 最长公共前缀编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。示例 1:输入:strs = ["flower","flow","flight"]输出:"fl"示例 2:输入:strs = ["dog","racecar","car"]输出:""char * longestCommonPrefix(char ** strs, int strsSize){ if(strsSize == 0) return ""; .

2022-01-03 22:20:27 101

原创 2022/1/2

9. 回文数给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。bool isPalindrome(int x){ if(x<0) return false; long a=0; long y=x; while(x!=0){ a=a*10+x%10; x=x/10; } if(y==a)

2022-01-02 21:12:06 67

原创 2022/1/1 总结

1. 两数之和给定一个整数数组 nums和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。int*twoSum(int*nums,intnumsSize,inttarget,int*returnSize){for(inti=0;i<numsSize;++i){...

2022-01-01 20:57:17 153

空空如也

空空如也

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

TA关注的人

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