自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Leetcode 213-220刷题笔记(非困难题目)

213.打家劫舍2该题目和之前的打家劫舍有点类似,不过该题目是一个的家庭是环形(代表第一位和最后一位不能够同时盗窃)。讲这道题我们可以将环形进行拆分,既然首位不发同时获取到,那么我们不如将这个环拆分成两个单列表(一个不包含第一家,一个不包含最后一家),根据这个情况的话我们可以将两个单列进行两次打家劫舍,取最大值即可。注意:有两种特殊情况需要进行考虑一下,长度 = 0 / = 1,因为无法数组无法进行割舍。 public int rob(int[] nums) { if(nums.

2020-12-24 16:16:40 169

原创 Leetcode 191-210刷题笔记(非困难题)

198.打家劫舍题目要求两个相邻的家不能同时被偷(暗示偷窃需要间隔n个家(n >=1))。看到这种题目,我们很容易联想到使用动态规划的思想进行求解。我们声明一个dp数组用于保存偷窃到该户时,能够产生的最大价值。那么这个动态规划的状态转移方程式是什么?我们通过需要间隔可以发现,最基本有两种偷窃模式:偷窃当前门户,那么获得上上个的最大价值和当前门户的价值。不偷窃当前门户,则我们可以获得上一户的最大价值。就可以得出 dp[i] = Max(dp[i-1],dp[i-2]+nums[i])

2020-12-20 17:13:45 216 1

原创 Leetcode171-190刷题笔记(非困难题)

171.Excel表列序号该题目就有点类似于一个进位为26的一个进制转换的题目。 public int titleToNumber(String s) { int ans = 0; for(int i=0; i<s.length(); i++) { ans *= 26; ans += s.charAt(i) - 'A' + 1; } return

2020-12-19 15:36:54 257 3

原创 MVC和ORM模式

MVCModel(模型) View(视图) Controller(控制器):是一种软件的设计规范,将业务逻辑(Controller),数据部分(Model),显示部分(View)进行分离。Model常常是与数据库相关的部分(javabean)View通过View给前端进行数据的显示,比如我们查询一些数据的信息,需要显示给前端。Controller比如Servlet,我们通过Servlet获得数据,并进行处理,返回一个对应Model中数据给View。ORM全程Object-Relation

2020-12-18 15:28:24 366 1

原创 Leetcode 151-160刷题笔记(非困难题目)

151.反转字符串的单词该题目有点类似于字符串的反转,但是该题目需要保证的是字符串内的单词反转后仍然是原先单词,并且格式以“单词1 单词2 单词3”的格式(即需要去除多余空格)针对于这么频繁的字符串操作我们自然就想到使用的是StringBuilder类刚好他自带了一个reverse()方法用于字符串反转,剩下的部分我们只需要对空格进行处理和内部单词的顺序进行处理。1.空格部分我是用的计数法,对多次重复出现的空格采取删除。2.内部单词顺序我采用正常的字符串反转的方法,对其反转,则需要精准截取字符串即

2020-12-15 16:14:44 72

原创 Leetcode141-150刷题笔记(非困难题目)

141.环形链表该题目是判断该链表是否存在环形结构,我们可以使用额外O(N)空间对结点进行保存,看是否存在重复。也可以使用我们常用的快慢结点法,判断快慢结点是否会碰头。 //判断是否为环形链表 public boolean hasCycle(ListNode head) { //快慢指针法 ListNode slow = head; ListNode fast = head; while(fast != null &amp

2020-12-12 17:21:23 103

原创 Leetcode 131-140刷题笔记(非困难题目)

131.分割回文串该题目使用的是回溯法,在添加到集合前,我们需要判断一下是否为回文串,如果不是则不添加。在是否为回文串我们可以采用动态规划的思想,对这个字符串进行一个预处理。 //字符串拆分成回文子串 public List<List<String>> partition(String s) { List<List<String>> lists = new ArrayList<>(); if(s.

2020-12-10 16:59:31 100

原创 Leetcode 121-130刷题笔记(非困难题目)

121.买卖股票的最佳时机该题目是只允许买卖一次股票,那么就对于我们买卖的时机需要斟酌。我们买卖股票肯定不能选择亏本生意,所以说必须买入 <= 卖出,并且买入要晚于卖出。根据这一特性,我们通过一个 min 的变量标记最低点,如果碰到比最低点还低的值,那么我们就可以选择更换最低点,不然则用以前的 min 计算卖出利润。 //卖股票最佳时机 public int maxProfit(int[] prices) { int ans = 0; //标记一

2020-12-09 16:10:18 98

原创 Leetcode111-120刷题笔记(非困难题目)

111.二叉树的最小深度该题目和之前的最大深度有点类似,但是该题目因为是求的是从根节点出发到最近的一个叶子结点,所以当我们出现结点只有一边子树的时候,我们需要走单边,而不是碰到了子树就返回,那么算出来的结果就是有问题的(举例是树退化成链表的样式) //树的最小深度(从根结点出发,到达最近的叶子结点的结点个数) public int minDepth(TreeNode root) { if(root == null) { return 0;

2020-12-06 16:08:09 97

原创 Leetcode 101-110刷题笔记(非困难题目)

101.对称二叉树该题主要就是通过比对对应位置的值是否相同,难点在于如果选取对位(因为是对称),通过观察我们可以发现,他是两个节点比对结束后,一个的左子树和另一个的右子树进行比对,比对结束后在比对前一个的右子树和现在的左子树,通过这带点我们可以发现关系。在这里插入代码片 //对称的二叉树 public boolean isSymmetric(TreeNode root) { return compare(root,root); } public boole

2020-12-05 17:09:27 126

原创 Leetcode 91-100刷题笔记(非困难题目)

91.解码方法该题目有点类似于与跳台阶问题,使用的是动态规划算法。我们可以选择截取后面一位,或者截取后面两位,如果后面一位符合逻辑则加上前面的dp值,两位也是一样的。1.一位需要保证值 > 02.两位需要保证 10 <= 数值 <= 26满足以上条件才能说明是合格的编码,才能够截取。 //解码(动态规划) public int numDecodings(String s) { int len = s.length();

2020-12-03 16:06:34 142

原创 Leetcode 81-90刷题笔记(非困难题目)

81.搜索旋转排序矩阵2该题和之前的也是类似,区别在于该题存在重复元素的可能性,所以需要针对这个重复元素进行一个处理,其余部分的思路和以前的那个题目是一样(二分法)该题针对重复元素,我这里是选择跳过,直到遇到非重复元素为止。 //搜索旋转数组的变种(包含重复元素) public boolean search(int[] nums, int target) { int left = 0; int right = nums.length - 1;

2020-12-02 15:29:43 101

原创 Leetcode 71-80刷题笔记(非困难题目)

71.简化路径该题目就是使用了一个双向队列进行操作,没有什么难度 public String simplifyPath(String path) { String[] change = path.split("/"); Deque<String> deque = new LinkedList<>(); for(int i=0; i<change.length; i++) { if(change[i

2020-12-01 15:42:59 90

空空如也

空空如也

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

TA关注的人

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