随笔分类 - 代码随想录算法训练营
摘要:Leetcode150 逆波兰表达式求值 题目链接 栈 class Solution { public int evalRPN(String[] tokens) { Deque<Integer> stack = new LinkedList(); for (String s : tokens) {
阅读全文
摘要:Leetcode232 用栈实现队列 题目链接 讲解 用两个栈实现队列 每次需要出队列 或者查看队头元素 时,将输入栈的所有元素放到输出栈 class MyQueue { Stack<Integer> stackIn; Stack<Integer> stackOut; public MyQueue(
阅读全文
摘要:Leetcode 151 反转字符串单词 题目链接 讲解 此题方法很多 很重要 注重基础解法 class Solution { public String reverseWords(String s) { char[] initialArr = s.toCharArray(); //新字符数组 ch
阅读全文
摘要:Leetcode344 反转字符串 题目链接 双指针思想 交换字符即可 class Solution { public void reverseString(char[] s) { int l = 0; int r = s.length-1; while(l<r){ char tep = s[l];
阅读全文
摘要:Leetcode454 四数相加2 题目链接 简单理解 四个数组的数 构成元组 相加为0 思想:参考力扣第一题 两数之和 才用哈希表解决问题 通过将ab数组之和存储到哈希表中,并记录次数 再通过 计算-(c+d)去匹配哈希表 如果存在 那么count+= 次数 即可 class Solution {
阅读全文
摘要:哈希表 很重要 哈希表 哈希表 场景 一般哈希表都是用来快速判断一个元素是否出现集合里 一般来说 数组模拟 哈希set 哈希map 不同的场景 当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。 但是哈希法也是牺牲了空间换取了时间,因为我们要使用额外的数组,set或者是map来存放
阅读全文
摘要:链表 一定要设置虚拟头节点 很重要 掌握链表基本操作,注意链表很多操作需要获取前一个节点,以及保存临时节点 总结
阅读全文
摘要:链表问题首先要记住 设置虚拟头节点 Leetcode24 两两交换链表节点 题目链接 思路:就是简单模拟 两两交换 要注意 链表节点的处理 一定要获取到合适的位置 比如:这一题中两个交换节点的前一个节点 注意链表保存临时节点 /** * Definition for singly-linked li
阅读全文
摘要:Leetcode203 移除链表元素 题目链接 注意 为了使后续节点方式统一 要人为设置链表头节点 链表的处理 一定要明白如何找前置节点 /** * Definition for singly-linked list. * public class ListNode { * int val; * L
阅读全文
摘要:数组总结 主要包括 二分法 双指针 滑动窗口 模拟 二分法 循环不变量原则 拓展 考虑学习 浮点数二分 整数二分扩展题目 双指针 快慢指针 原地解决问题、双向解决问题 滑动窗口 滑动窗口的精妙之处在于根据当前子序列和大小的情况,不断调节子序列的起始位置。从而将O(n^2)的暴力解法降为O(n) 外层
阅读全文
摘要:数组第二部分 977 有序数组的平方 题目链接 双指针思想 题解 数组其实是有序的, 只不过负数平方之后可能成为最大数了。 那么数组平方的最大值就在数组的两端,不是最左边就是最右边,不可能是中间。 此时可以考虑双指针法了,i指向起始位置,j指向终止位置。 定义一个新数组result,和A数组一样的大
阅读全文
摘要:leetcode 704 二分查找 704 二分查找 思想:二分法 简单二分问题 注意二分问题有很多模式,二分问题查找核心是区间问题 注意所学两种写法:区间左闭右开 区间左闭右闭 二分查找问题 class Solution { public int search(int[] nums, int ta
阅读全文

浙公网安备 33010602011771号