力扣刷题笔记
文章平均质量分 56
力扣刷题记录
小树上的男爵
这个作者很懒,什么都没留下…
展开
-
使用left join时,and和where的区别
1,and条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。若和右边的表关联不上,右边对应的字段显示null2,where条件是临时表生成以后,再对临时表进行过滤的条件。临时表生成以后,也就没有left join的意义了,where后条件不为真的全都过滤掉...原创 2022-02-25 00:10:36 · 424 阅读 · 0 评论 -
数据库的各种join
左联结和右联结这样描述更加通俗易懂:左连接:以左表为主,显示左表所有的数据,右表中没有的显示null值。右连接:以右表为主,显示右表所有的数据,左表中没有的显示null值。内部联结和外部联结inner join(等值连接) 只返回两个表中联结字段相等的行。inner join并不以谁为基础,它只显示符合条件的记录。inner join返回两个表基于连接条件实际匹配的行,即两个表交集。outer join返回两个表的并集结果,即匹配条件不满足的两个表的记录也将返回。关键字on和whereon是原创 2022-02-24 23:24:51 · 444 阅读 · 0 评论 -
力扣206. 【反转链表】的三种实现方式:头插法,迭代法,递归法(附带Java实现和讲解视频链接)
文章目录题目描述头插法实现迭代与递归的预备知识迭代的实现递归的实现参考资料题目描述给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。头插法实现对链表有了解的小伙伴应该对头插法建立单链表的方法有所了解,头插法的特征是,建立好的单链表的顺序和我们输入节点的顺序是相反的,按这个特种,我们就可以借助头插法对链表进行逆置public ListNode reverseList(ListNode head) { ListNode ans = null; //遍历原创 2022-02-24 16:06:38 · 629 阅读 · 0 评论 -
力扣No.121——初识动态规划思想(Java实现)
文章目录动态规划策略的定义一、问题描述二、暴力法(将会超出时间限制)二、动态规划动态规划策略的定义动态规划和备忘录共同作用。动态规划和分治法的主要区别在于:对于后者,子问题是相互独立的,而在动态规划中,子问题可能是重叠的,通过使用备忘录(用于保存已解决子问题的答案)。对于大部分问题,动态规划是能够将问题的时间复杂度由指数级如O(n2)、O(n3)降低为多项式级别的一、问题描述给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天原创 2022-02-17 21:42:34 · 323 阅读 · 0 评论 -
HashSet与HashMap的区别
文章目录HashSet:HashMap:HashSet与HashMap的区别:先了解一下HashMap跟HashSetHashSet:HashSet实现了Set接口,它不允许集合中出现重复元素。当我们提到HashSet时,第一件事就是在将对象存储在HashSet之前,要确保重写hashCode()方法和equals()方法,这样才能比较对象的值是否相等,确保集合中没有储存相同的对象。如果不重写上述两个方法,那么将使用下面方法默认实现:public boolean add(Object obj)方原创 2022-02-10 17:16:32 · 159 阅读 · 0 评论 -
HashMap与HashTable的区别
文章目录1. HashMap不是线程安全的2. HashTable是线程安全的总结1. HashMap不是线程安全的HashMap是map接口的子类,是将键映射到值的对象,其中键和值都是对象,并且不能包含重复键,但可以包含重复值。HashMap允许null key和null value,而hashtable不允许。2. HashTable是线程安全的HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),转载 2022-02-10 16:29:42 · 198 阅读 · 0 评论 -
Java的二分查找
文章目录前言一、迭代方法(非递归方法)总结前言给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-search一、迭代方法(非递归方法)通过设置数组头尾的两个指针,对数组进行二分查找。public static int search(int[] num.原创 2022-01-10 23:39:36 · 83 阅读 · 0 评论 -
力扣 No.977 有序数组的平方 & No.189轮转数组
提示:给你一个按 非递减顺序 排序的整数数组 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-01-14 21:34:38 · 124 阅读 · 0 评论 -
力扣 No.35搜索插入位置
文章目录前言一、代码总结前言给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/search-insert-position著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。必须使用时间复杂度为 O(log n) 的算法。一、代码这题没啥好说的,直接.原创 2022-01-12 22:16:01 · 106 阅读 · 0 评论 -
力扣 No.278 二分法的简单应用
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、暴力法(会报错——超出时间限制)二、自己用折半查找的优化(超出内存限制)总结前言你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。假设你有 n 个版本 [1, 2, …, n],你想找出导致之后所有版本出错的第一个错误的版本。你可以通过调用 bool isBadVersion(version) 接原创 2022-01-11 23:07:51 · 374 阅读 · 0 评论 -
力扣No.283移动零
283、给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。文章目录一、双循环暴力法二、官方答案——双指针。三、直接覆盖填充总结提示:以下是本篇文章正文内容,下面案例可供参考一、双循环暴力法借鉴了冒泡排序的思想,每次把一个零移动到最末尾,最坏需要移动n次,时间复杂度较高。只用一个指针,判定所指向的元素是否为0,如果是,则和右边的元素交换位置。public static void moveZeroes(int[] nums) { int原创 2022-01-15 15:16:45 · 111 阅读 · 0 评论 -
力扣第一题——求和问题
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、暴力求解二、使用HashMap(后续再更)总结前言有人相爱,有人夜里开车看海,有人leetcode第一题都做不出来。题目:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。一、暴力求解对数组进行两次循环,先原创 2022-01-09 22:27:37 · 261 阅读 · 2 评论