自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 资源 (2)
  • 收藏
  • 关注

原创 ## 剑指offer57 和为S的连续正数序列、## 力扣112 路径总和

剑指offer57 和为S的连续正数序列思路class Solution { public int[][] findContinuousSequence(int target) { List<int[]> result = new ArrayList<int[]>(); int sum = 0; for(int l=1,r=2;l<r;){ sum = (l+r)*(r-l+1)/2;

2021-01-27 20:27:03 79

原创 ## 771宝石与石头(哈希表)

771宝石与石头(哈希表)class Solution { public int numJewelsInStones(String jewels, String stones) { HashSet<Character> ss = new HashSet<Character>(); for(int i=0; i<jewels.length(); i++){ ss.add(jewels.charAt(i));

2021-01-22 23:47:06 89

原创 力扣989 数组形式的整数加法

思路 用List从低位到高位依次存储,然后Collections.reverse(res);逆置列表class Solution { public List<Integer> addToArrayForm(int[] A, int K) { List<Integer> res = new ArrayList<Integer>(); int n = A.length; for (int i = n - 1; i..

2021-01-22 22:56:40 88

原创 ## 力扣965 单值二叉树、## 力扣617 合并二叉树、## 剑指offer09 用两个栈实现队列

力扣965 单值二叉树/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { int a = 0; int val = 0; public boolean

2021-01-21 20:59:17 83

原创 面试题02.05 链表求和

思路 遍历,当一个链表为空时,置0于另一个链表及进位符想加当最高位产生进位时,根据carry位的状态 ,增加一个节点。/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public ListNode .

2021-01-21 00:03:09 57

原创 ## 剑指offer18 删除链表中的节点、## 面试题0..06 回文链表 、## 剑指offer25合并两个排序的链表、## 力扣328 奇偶链表

剑指offer18 删除链表中的节点给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。注意:此题对比原题有改动示例 1:输入: head = [4,5,1,9], val = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例 2:输入: head = [4,5,1,9], val = 1输出: [4,5,9]解释: 给定你链表中值为 1 的第三

2021-01-20 22:12:48 67

原创 ## 力扣389 找不同、力扣1480 一组数组的动态和、## 力扣237删除链表中的节点、## 力扣977 有序数组的平方

力扣389 找不同注释:java的亦或操作是^= 不能写成a = a ^ b 要写成 a ^= b给定两个字符串 s 和 t,它们只包含小写字母。字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。请找出在 t 中被添加的字母。示例 1:输入:s = “abcd”, t = “abcde”输出:“e”解释:‘e’ 是那个被添加的字母。示例 2:输入:s = “”, t = “y”输出:“y”示例 3:输入:s = “a”, t = “aa”输出:“a”示例

2021-01-20 20:48:21 96

原创 ## 力扣628 三个数的最大乘积、力扣122 买卖股票的最佳时机、力扣876 链表的中间节点、面试题 02.07 链表相交、 203移除链表元素

力扣628 三个数的最大乘积方法一:排序首先将数组排序。如果数组中全是非负数,则排序后最大的三个数相乘即为最大乘积;如果全是非正数,则最大的三个数相乘同样也为最大乘积。如果数组中有正数有负数,则最大乘积既可能是三个最大正数的乘积,也可能是两个最小负数(即绝对值最大)与最大正数的乘积。综上,我们在给数组排序后,分别求出三个最大正数的乘积,以及两个最小负数与最大正数的乘积,二者之间的最大值即为所求答案。最小的两个和最大值:处理最小值为负数时max(最大的三个的积,最小的两个数和最大值的积) c

2021-01-20 18:07:13 135

原创 力扣19删除链表的倒数第n个节点、力扣225用队列实现栈、面试题10.01 合并排序的数组、力扣34在排序数组中查找元素的第一个和最后一个位置、力扣148排序链表

力扣19删除链表的倒数第n个节点给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.思路:链表题涉及到位置索引的可以通过设计方法来求链表长度注意,初始化一个纸箱head的节点列表:ListNode dummy = new ListNode(0,head);首先现找到倒数第n-1个节点 寻找方法,通过for(int

2021-01-19 19:29:22 183

原创 算法之动态规划

例1 爬楼梯 力扣70dp就是动态规划 dymatic programming例2 打家劫舍 力扣198思路:第i间的最优解 = max(是第i-2房间的最优解+当前房间的值 与第i-1个房间的最优解)p[i]=Math.max(dp[i-2]+nums[i],dp[i-1]);例3:最大子段和 力扣53sum表示一种增益,如果增益大于0那么表示我们这个增加长度对初始是有效的所以可以扩充当前子段从nums[0]开始作为初始值,所以说当sum>0时才作为一个起点,当这.

2021-01-15 23:27:11 68

原创 ## 05替换空格

05替换空格请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = “We are happy.”输出:“We%20are%20happy.”限制:0 <= s 的长度 <= 10000方法一:字符数组由于每次替换从 1 个字符变成 3 个字符,使用字符数组可方便地进行替换。建立字符数组地长度为 s 的长度的 3 倍,这样可保证字符数组可以容纳所有替换后的字符。获得 s 的长度 length创建字符数组 array,其长度为 length * 3

2021-01-15 23:26:50 84

原创 Day19 Java乱学集锦List

1.2 List接口中常用的方法 增加元素方法 add(Object e):向集合末尾处,添加指定的元素 add(int index, Object e):向集合指定索引处,添加指定的元素,原有元素依次后移 删除元素删除 remove(Object e):将指定元素对象,从集合中删除,返回值为被删除的元素 remove(int index):将指定索引处的元素,从集合中删除,返回值为被删除的元素 替换元素方法 set(int index, Object e):将指定索引处的元

2021-01-15 11:03:03 68

原创 ## 1018 可被5整除的二进制前缀## 171Excel表列序号## 172 阶乘后的0

1018 可被5整除的二进制前缀给定由若干 0 和 1 组成的数组 A。我们定义 N_i:从 A[0] 到 A[i] 的第 i 个子数组被解释为一个二进制数(从最高有效位到最低有效位)。返回布尔值列表 answer,只有当 N_i 可以被 5 整除时,答案 answer[i] 为 true,否则为 false。示例 1:输入:[0,1,1]输出:[true,false,false]解释:输入数字为 0, 01, 011;也就是十进制中的 0, 1, 3 。只有第一个数可以被 5 整除,因此 a

2021-01-14 21:36:39 87

原创 64x的平方根 力扣83删除排序链表中的重复元素 88 合并两个有序数组

64x的平方根实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842…,由于返回类型是整数,小数部分将被舍去。使用内置函数:注意从double转为int的操作格式 class Solution { public int mySqrt(int x) { return

2021-01-13 14:36:22 76

原创 58最后一个单词的长度 66加一

58最后一个单词的长度给定一个仅包含大小写字母和空格 ’ ’ 的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。如果不存在最后一个单词,请返回 0 。说明:一个单词是指仅由字母组成、不包含任何空格字符的 最大子字符串。示例:输入: “Hello World”输出: 5思路:首先找到最后一个单词的单词尾部:即前一个字符为字母后一个字符为空格找到最后一个单词的起始位置:前一个位置为空格,后一个位置为字母end - start;length

2021-01-12 16:33:23 74

原创 4、寻找两个正序数组的中位数 力扣38.外观数列

4、寻找两个正序数组的中位数给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的中位数。进阶:你能设计一个时间复杂度为 O(log (m+n)) 的算法解决此问题吗?示例 1:输入:nums1 = [1,3], nums2 = [2]输出:2.00000解释:合并数组 = [1,2,3] ,中位数 2示例 2:输入:nums1 = [1,2], nums2 = [3,4]输出:2.50000解释:合并数组 = [1,2,3,4]

2021-01-11 22:17:32 85

原创 力扣461翰明距离543. 二叉树的直径617. 合并二叉树

461. 汉明距离两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。注意:0 ≤ x, y < 231.示例:输入: x = 1, y = 4输出: 2解释:1 (0 0 0 1)4 (0 1 0 0)↑ ↑上面的箭头指出了对应二进制位不同的位置。class Solution { public int hammingDistance(int x, int y) { int

2021-01-10 22:44:08 112 1

原创 2021-1-10python批量改名图片

批量图片改名给自己看的,自己能运行,能改就够了import osimport cv2IMG_EXTENSIONS = [‘.jpg’, ‘.JPG’, ‘.jpeg’, ‘.JPEG’,‘.png’, ‘.PNG’, ‘.ppm’, ‘.PPM’, ‘.bmp’, ‘.BMP’,]def isImagefile(input):return any(input.endswith(ext) for ext in IMG_EXTENSIONS)inputdir = ‘C:\Users\Admi

2021-01-10 22:02:46 149

原创 力扣198打家劫舍

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1:输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。偷窃到的最高金额 = 1 + 3 = 4 。示例 2:输入:[2,7,9,3.

2021-01-06 21:20:28 49

原创 力扣169 多数元素

力扣169 多数元素给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入:[3,2,3]输出:3示例 2:输入:[2,2,1,1,1,2,2]输出:2进阶:尝试设计时间复杂度为 O(n)、空间复杂度为 O(1) 的算法解决此问题。法1:HashMap法思路,建立一个存储元素个数和元素名称的HashMap HashMap<Integer,Integer&

2021-01-06 20:33:53 89

原创 力扣155 最小栈

力扣155 最小栈设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。push(x) —— 将元素 x 推入栈中。pop() —— 删除栈顶的元素。top() —— 获取栈顶元素。getMin() —— 检索栈中的最小元素。示例:输入:[“MinStack”,“push”,“push”,“push”,“getMin”,“pop”,“top”,“getMin”][[],[-2],[0],[-3],[],[],[],[]]输出:[null,null,nul

2021-01-06 18:58:05 74

原创 力扣141:环形链表 142环形链表2

方法一:哈希表思路及算法最容易想到的方法是遍历所有节点,每次遍历到一个节点时,判断该节点此前是否被访问过。具体地,我们可以使用哈希表来存储所有已经访问过的节点。每次我们到达一个节点,如果该节点已经存在于哈希表中,则说明该链表是环形链表,否则就将该节点加入哈希表中。重复这一过程,直到我们遍历完整个链表即可。public class Solution { public boolean hasCycle(ListNode head) { Set<ListNode>

2021-01-06 16:10:09 135

原创 力扣136只出现一次的数字

136 只出现一次的数字给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4标签:位运算1、本题根据题意,线性时间复杂度 O(n)O(n),很容易想到使用 Hash 映射来进行计算,遍历一次后结束得到结果,但是在空间复杂度上会达到 O(n)O(n),需要使用较多的额外空间2、

2021-01-06 15:57:44 71

原创 力扣121:买卖股票的最佳时机

力扣121:买卖股票的最佳时机给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意:你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出

2021-01-06 15:21:22 159

原创 力扣104:二叉树的最大深度

力扣104:二叉树的最大深度解题思路1、标签:DFS2、找出终止条件:当前节点为空3、找出返回值:节点为空时说明高度为 0,所以返回 0;节点不为空时则分别求左右子树的高度的最大值,同时加1表示当前节点的高度,返回该数值4、某层的执行过程:在返回值部分基本已经描述清楚5、时间复杂度:O(n)O(n)/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNo

2021-01-06 15:04:26 206

原创 力扣35搜索插入位置

思路1、标签:滑动窗口2、暴力解法时间复杂度较高,会达到 O(n^2)O(n2),故而采取滑动窗口的方法降低时间复杂度3、定义一个 map 数据结构存储 (k, v),其中 key 值为字符,value 值为字符位置 +1,加 1 表示从字符位置后一个才开始不重复4、我们定义不重复子串的开始位置为 start,结束位置为 end5、随着 end 不断遍历向后,会遇到与 [start, end] 区间内字符相同的情况,此时将字符作为 key 值,获取其 value 值,并更新 start,此时 [s

2021-01-06 13:52:56 134

原创 力扣101:对称二叉树## 力扣100相同的树

给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:解题思路递归结束条件:都为空指针则返回 true只有一个为空则返回 false递归过程:判断两个指针当前节点值是否相等判断 A 的右子树与 B 的左子树是否对称判断 A 的左子树与 B 的右子树是否对称短路:在递归判断过程中存在短路现象,也就是做 与 操作时,如果前面的值返回 false 则后面的不再进行计算

2021-01-06 12:29:43 55

原创 力扣70:爬楼梯

给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。思路1、这道题用动态规划的思路并不难解决,比较难的是后文提出的用分治法求解,但由于其不是最优解法,所以先不列出来2、动态规划的是首先对数组进行遍历,当前最大连续子序列和为 sum,结果为 ans3、如果 sum > 0,则说明 sum 对结果有增益效果,则

2021-01-06 12:03:32 133

原创 力扣 剑指offer85 链表求交点

链表求交点[https://leetcode-cn.com/problems/liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof/solution/shuang-zhi-zhen-fa-lang-man-xiang-yu-by-ml-zimingm/]看图思路:类似于求最小公倍数的感觉。我们使用两个指针 node1,node2 分别指向两个链表 headA,headB 的头结点,然后同时分别逐结点遍历,当 node1 到达链表 headA .

2021-01-05 23:04:32 83

原创 力扣206反转一个单链表

力扣206反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL思路临时节点next指向原head的nexthead.next指向new_headnew_head指向headhead更新到临时节点/** * Definition for singly-linked list. * public class ListNode { * int val; *

2021-01-05 22:44:32 135

原创 力扣28实现strStr()

力扣28实现strStr()概述这道题是要在 haystack 字符串中找到 needle 字符串。下面会给出的三种解法,这三种解法都基于滑动窗口。子串逐一比较的解法最简单,将长度为 L 的滑动窗口沿着 haystack 字符串逐步移动,并将窗口内的子串与 needle 字符串相比较,时间复杂度为 O((N - L)L)O((N−L)L)显示上面这个方法是可以优化的。双指针方法虽然也是线性时间复杂度,不过它可以避免比较所有的子串,因此最优情况下的时间复杂度为 O(N)O(N),但最坏情况下的时间复杂

2021-01-05 21:55:46 74

原创 力扣27移除元素

力扣27移除元素和力扣26类似 双指针,很简单给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素

2021-01-05 21:48:24 62

原创 力扣26删除排序数组中的重复项

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

2021-01-05 21:06:13 81

原创 力扣21合并两个有序链表(递归永远滴神)

21合并两个有序链表将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4方法一:递归思路我们可以如下递归地定义两个链表里的 merge 操作(忽略边界情况,比如空链表等):list1[0]+merge(list1[1:],list2)list2[0]+merge(list1,list2[1:])​

2021-01-05 20:15:14 96

原创 力扣20:有效地括号(简单)

给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false示例 4:输入: “([)]”输出: false示例 5:输入: “{[]}”输出: true思路:栈解题思路:算法原理

2021-01-05 19:33:45 162

原创 力扣14:最长公共前缀。

编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。1、思路2、标签:链表3、当字符串数组长度为 0 时则公共前缀为空,直接返回4、令最长公共前缀 ans 的值为第一个字符串,进行初始化5、遍历后面的字符串,依次将其与 ans 进行比较,两两找出公共前缀,最终结

2021-01-05 16:38:46 161

原创 力扣830较大分组的位置(简单题)

Leetcode 830在一个由小写字母构成的字符串 s 中,包含由一些连续的相同字符所构成的分组。例如,在字符串 s = “abbxxxxzyy” 中,就含有 “a”, “bb”, “xxxx”, “z” 和 “yy” 这样的一些分组。分组可以用区间 [start, end] 表示,其中 start 和 end 分别表示该分组的起始和终止位置的下标。上例中的 “xxxx” 分组用区间表示为 [3,6] 。我们称所有包含大于或等于三个连续字符的分组为 较大分组 。找到每一个 较大分组 的区间,按起

2021-01-05 10:59:32 71

原创 1_4复杂度

二分查找法O(logn) 所需执行指令数(a*logn)寻找数组中的最大最小值O(n)二分查找法O(logn)所需执行指令数(a*logn)寻找数组中的最大最小值O(n)所需执行指令数(b*n)归并排序法O(nlogn)所需执行指令数(c*nlogn)选择排序法O(n^2)所需执行指令数(d*n^2)问题:有一个字符串数组,将数组中的每一个字符串按照字母序排序,之后再讲整个字符串数组按照字典

2021-01-04 22:53:09 100

原创 力扣435:给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。

力扣435:给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。注意:可以认为区间的终点总是大于它的起点。区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。示例 1:输入: [ [1,2], [2,3], [3,4], [1,3] ]输出: 1解释: 移除 [1,3] 后,剩下的区间没有重叠。示例 2:输入: [ [1,2], [1,2], [1,2] ]输出: 2解释: 你需要移除两个 [1,2] 来使剩下的区间没有重叠。示例 3:输入: [

2021-01-04 10:48:45 2083

原创 力扣13:罗马字符转整数

罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。通常情况

2021-01-04 10:48:02 80

Single Image Reflection Removal论文整理阅读.pptx

ERRnet CEILnet CoRRN_net IBCLN_net RM_net SIRS等等十几篇SIRR论文讲解

2020-11-23

可解释网络论文阅读.pptx

ISTA-NET(压缩感知) OPINE_NET(压缩感知ISTA的发展) MHF_NET(高分辨率多光谱+低分辨率高光谱=高分辨率高光谱)

2020-11-23

空空如也

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

TA关注的人

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