自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 背包问题详解

背包问题主要分为0-1背包、完全背包、多重背包和分组背包问题。

2023-10-18 18:02:05 42 1

原创 动态规划解题方法

2.递推公式,例dp[i]=dp[i-1]+dp[i-2],或dp[i]=Math.max(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2])4.遍历顺序,一维dp数组从前到后遍历还是从后往前遍历,二维dp数组从上到下还是从下到上。5.当出现错误的时候,可以把dp数组打印出来,以更好的发现错误地方。基础、背包、打家劫舍、股票和子序列问题。1.dp[i]代表的含义。

2023-10-16 16:29:41 38 1

原创 代码随想录算法训练营DAY22|235、701、450

难点在于删除节点的同时保证这是一颗二叉搜索树。分情况讨论:一要删除的节点不存在。存在具体可分为①叶子节点②左子树为空③右子树为空④左右子树都不为空,采取措施为将要删除节点的左子树放到右子树最小的节点上。和 236二叉树的公共祖先相似,可以一起看。如何利用递归的返回值构建树的结构。二叉搜索树的特性使代码更简单。难点在于讨论会有几种情况。

2023-10-03 00:07:05 48 1

原创 代码随想录算法训练营DAY21|二叉搜索树的相关题目

二叉搜索树的特性:左子树比根节点都小,右子树比根节点大。中序遍历二叉搜索树是有序的。

2023-09-26 12:11:42 48 1

原创 代码随想录算法训练营DAY16|二叉树递归和迭代法

递归代码比迭代法简洁,但我却想不出来,主要难点在于不懂对于每一个节点该做的处理,以及递归过程的不熟悉。迭代法主要是层序遍历的改动。

2023-09-22 10:28:07 28 1

原创 代码随想录算法训练营DAY15|二叉树的层序遍历

大部分二叉树的题目都可以用递归和迭代法解决。递归法从三个方面考虑:1.确定函数的返回值和参数2.确定终止条件3.确定每一层的逻辑递归法逻辑是从前序遍历、后序遍历、中序遍历入手。迭代法可以用层序遍历入手。226. 翻转二叉树 - 力扣(LeetCode)101. 对称二叉树 - 力扣(LeetCode)

2023-09-22 10:06:56 32 1

原创 代码随想录算法训练营DAY14|二叉树的前中后序遍历

int val;

2023-09-22 09:54:01 42 1

原创 代码随想录算法训练营DAY11|20、1047、150

卡的点在于如何将String类型变成Integer类型 ,使用函数Integer.valueOf();字符串比较要用equals函数,尽量用已知的字符来调用,避免出现空值异常。例如:"+".equals(s)当遍历到左括号在栈中加入右括号,方便比较,因此使用哈希表也很方便。值得注意的是除法和减法时,先弹出来的是除数和减去的数。应该用变量记录下来。

2023-09-18 16:25:51 22 1

原创 代码随想录算法训练营DAY10|队列栈的基本操作(232、225)

因为LinkedList实现了Queue接口,因此我们可以把LinkedList当成Queue来用。定义方法:Queue queue = new LinkedList();定义方法:Stack stack=new Stack();返回第一个元素:peek();是否为空:isEmpty();添加元素:offer();删除元素:poll();

2023-09-18 10:39:40 52 1

原创 代码随想录算法训练营DAY9|KMP算法(28、459)多加理解!!!

对比不同:1.可以引入标识flag。2.双重循环直接对比,i+j来表示下标。初始代码: 暴力解法,时间复杂度为m*n,代码繁琐。

2023-09-17 22:13:16 85 1

原创 代码随想录算法训练营DAY8|151

151反转字符串中的单词。

2023-09-17 15:14:24 33 1

原创 Java中String类型的相关方法

功能:将指定字符串以指定的连接符连接,参数一:连接符。参数二:指定字符串或者集合。返回连接后的字符串。功能:根据指定的正则表达式切割字符串,返回切割后的数组。例:s.split("\\s+");根据连续的空白字符来切割字符串。语法:String.join(CharSequence delimiter,Iterable elements)语法:public String[] split(String regex, int limit)功能:删除字符串开头和结尾空白字符。语法:String trim()

2023-09-14 12:03:34 22 1

原创 代码随想录算法训练营DAY7|454、383、15、18

思路:一开始想到了哈希表,先循环三次数组后,再使用哈希表,时间复杂度为n的立方。之后在视频启发下写出了利用两个哈希表的代码。难点在于如何排除重复元素,大致思路是先循环后二分查找。和242类似,既可以用哈希表也可以用数组做。注意:排除重复元素的先后,+1、-1.定义为long,是为了防止整数溢出。

2023-09-12 21:23:42 26 1

原创 代码随想录算法训练营DAY6|242、349、202、1

数组的键是索引、值是元素值,比哈希表操作更快,因为没有计算哈希值、比较等过程。因此可以用数组,就尽量用数组。在Java中,哈希表是由数组、链表和红黑树组成的。只想到了 利用哈希表,但利用数组更快。存在技巧,只有26个字母,数组长度为26,利用ASCII编码表中,字母与'a'的相差当作数组的索引。一开始想的是递归,但是false的情况超过内存了。题目不难,有点绕的是返回一个数组,利用哈希表去重后还要转换成数组。之前写的是暴力解法,hashmap符合题意“数组中同一个元素在答案里不能重复出现。

2023-09-11 22:56:43 21

原创 代码随想录算法训练营DAY4|24、19、142、面试0207

思路:找出更长的一组,设置两个指针分别指向两个链表,让长的链表先走len=lenA-lenB步,之后两个指针同时移动,两个指针所指节点相同的既是相交的第一个节点。难点:运用快慢指针。快指针走两步,慢指针走一步,当 快慢指针相遇时,表示存在环。此时再设置一个指针指向头节点,与慢指针以相同步数前进,再次相遇时即是环的起始。难点:运用快慢指针,让快指针先走N+1步,之后快慢指针同时向前。难点:设置基准点,本题的基准点是要交换的两个节点前一个节点。要注意赋值顺序,利用变量保存节点。面试题0207链表相交。

2023-09-09 23:03:11 40 1

原创 代码随想录算法训练营DAY3|203、707、206

对链表基础很不熟悉,要多练习。链表的增删改查,修改元素的先后循序。技巧:链表可用指针遍历。设置虚拟节点来减少增加或删除的复杂度。难点:虚拟头节点的使用。

2023-09-08 22:34:34 102

原创 代码随想录算法训练营DAY2|977、209、59

可学习的地方:①设置锚点(startx,starty)对于每一圈设置一个基准点,循环一次后基准点有所变动(startx++;难点:第一时间想到了滑动窗口。但没有想好什么情况下移动左指针,什么情况下移动右指针。难点:对于复杂问题如何拆解。如何描述坐标的移动。抽象问题可以将其具体化想象。难点一:找到数组中数的规律,两边大,中间小。因此可设置头指针和尾指针。总结:只做出了977题。对滑动窗口不熟悉,不会寻找规律。方法一:先平方,再利用Arrays类(首先想到的)难点二:倒序将双指针所指更大的元素放置新数组中。

2023-09-07 22:55:47 160

原创 代码随想录算法训练营DAY1 | 704、27

二分查找注意:指针所指区间为左闭右闭区间,故循环终止条件为left>right。与mid所指元素比较后,右指针要-1。循环结束后仍未找到,返回-1。可以优化的地方:mid=left+(right-left)/2,防止溢出。

2023-09-06 15:09:36 340

空空如也

空空如也

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

TA关注的人

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