leetcode刷题
文章平均质量分 69
付付的刷题总结笔记
付付要努力呀
越努力越幸运,希望经过自己的努力不断提升自己,成为一个更好的自己!!加油!!
展开
-
排序算法笔记——选择排序
排序选择排序写算法流程重要的排序:插入排序、堆排序、归并排序、快速排序。选泡插快归堆希统计基恩方恩老恩一三对恩加K恩乘K选择排序一遍一遍的过滤数组,然后找到数组里面最小的数,把它放到前面来。第一遍,过滤整个数组,找到最小的数1,然后把1和第一个数5换位置。第二遍,因为第一个最小的数已经找到了,即除了第一个数1之外的剩下的部分,找出最小的数,重复这个过程。。具体例子:如10个人排成从低到高的队列。首先是从10个人中找出最矮的放到第一个,然后从第二个人开始找出第二个矮个子的。。。。。原创 2021-07-03 13:34:06 · 112 阅读 · 1 评论 -
力扣视频笔记3——java数组常见操作
刷力扣视频笔记创建数组添加元素访问元素更新元素删除元素数组长度遍历数组查找元素数组的排序创建数组常见方式有4种,基本上这四种就足够了。以常见数组【1,2,3】为例子第一二种:(知道数组中元素值为1,2,3,就直接赋值即可)int[] a ={1,2,3};int[] b =new int[]{1,2,3};第三种:int[] c =new int[3];for(int i =0;i<a.length;i++){c[i]=i+1;}第四种:(用java内置的包ArrayList,原创 2021-05-26 16:13:11 · 168 阅读 · 0 评论 -
力扣视频笔记2
刷力扣视频笔记数组数组的访问数组的搜素数组的时间复杂度访问搜素插入删除数组的特点数组的常用操作创建、添加、访问、更新、删除添加访问:更新:删除:获取长度遍历数组查找某个元素数组的排序数组定义:在连续的内存空间中,存储一组相同类型的元素。数组的访问访问是通过某个下标(索引)去访问数组中的某个元素数组的搜素搜素是查找数组中的某一个元素(或者是 找一找这个数组中存不存在2这个元素等。。。)数组的时间复杂度四种复杂度数组有一个特点,第一个元素自带内存地址位置。如一个数组为【1,2,3】,第一个原创 2021-05-25 17:13:07 · 41 阅读 · 0 评论 -
力扣视频笔记
刷力扣视频笔记时间复杂度**o(1):****o(N):****o(logN):****o(M+N):****o(NlogN):****o(N^2):**对比空间复杂度对比时间复杂度时间复杂度:算法的执行效率。算法的执行时间与算法的输入值之间的关系。计算时间复杂度,就看算法里面有没有循环,有循环的话,这些常量单语句就不看了。没有循环,基本上就是o(1)了,o(1):算法与我们的输入num无关,都是常量时间。不管我们的num值有多大,当前的算法执行的时间都不变。此时语句中无循环语句如for whi原创 2021-05-24 20:57:20 · 51 阅读 · 0 评论 -
在线编程题——乘法表
乘法表题目我的思路:解法二分法(猜数字游戏)python 二分法查找答案:题目我的思路:把乘法表中所有元素整出来,然后升序排列,取出索引k-1的元素。(只能针对测试案列,且暴力解法,比较笨)通过率低。解法二分法(猜数字游戏)二分查找是一种算法,其输入是一个有序的元素列表 (必须是有序的),如果查找的元素包含在列表中,二分查找返回其位置,否则返回NULL二分法查找的思路如下:(1)首先,从数组的中间元素开始搜索,如果该元素正好是目标元素,则搜索过程结束,否则执行下一步。(2)如果目标元原创 2021-04-29 09:37:58 · 153 阅读 · 3 评论 -
付付的100刷题计划10——删除有序数组中的重复项
删除数组中重复的元素题目自己的思路答题官方解法题目自己的思路用python编写的话,删除数组中的某个元素方法:答题官方解法双指针法:一个指针i进行数组遍历,另一个指针j指向有效数组的最后一个位置。只有当i所指向的值和j不一致(不重复),才将i的值添加到j的下一位置。通用解法:通用解法是一种针对(数据有序,相同元素最多保留k位)更加本质的解法,利用了数组有序和保留逻辑两大主要性质。...原创 2021-04-19 10:29:14 · 51 阅读 · 0 评论 -
付付的100刷题计划9——Java写两数之和
Java——两数之和题目Java编写——暴力解法:Java中的哈希表:题目Java编写——暴力解法:注意:java是强类型语言,必须定义变量类型每一句写完要加分号;方法定义完以后,要return一个值,可以为空null,只有当返回类型为void时可以不写返回值。给一个新数组赋值要new一个,即new int[]{i,j};Java中的哈希表:...原创 2021-04-14 16:52:42 · 52 阅读 · 0 评论 -
付付的100刷题计划8——队列的应用(滑动窗口)
滑动窗口里的最大值队列:题目:思路:算法流程代码队列:队列(Queue)是一种先进先出(FIFO,First-In-First-Out)的线性表。在具体应用中通常用链表或者数组来实现。队列只允许在后端(称为 rear)进行插入操作,在前端(称为 front)进行删除操作。队列的操作方式和堆栈类似,唯一的区别在于队列只允许新数据在后端进行添加。队列常用的方法有:add、remove、element、offer、poll、peek、put、take。题目:思路:本题使用单调队列即可解决。遍历原创 2021-03-30 14:45:22 · 115 阅读 · 1 评论 -
付付的100刷题计划7——单调栈
栈的应用Leetcode7思路:单调栈求下一个更大的元素实现循环数组代码Leetcode7给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。题目的两个重点:如何求下一个更大的元素和如何实现循环数组思路:就是入栈前先排个序。如果当前元素比栈顶元素小,正常入栈。如果当前元素比栈顶元素大,那么关键点就来了,说原创 2021-03-24 20:42:32 · 67 阅读 · 2 评论 -
付付的100刷题计划6——栈+递归(基本计算器)
付付的100刷题计划6栈的应用思路:递归栈代码用python中的列表相关函数求解用字典模拟哈希求解更直观的方法栈的应用给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。示例 1:输入:s = “1 + 1”输出:2示例 2:输入:s = " 2-1 + 2 "输出:3示例 3:输入:s = “(1+(4+5+2)-3)+(6+8)”输出:23提示:1 <= s.length <= 3 * 105s 由数字、’+’、’-’、’(’、’)’、和 ’ ’原创 2021-03-23 10:28:19 · 106 阅读 · 2 评论 -
付付的100刷题计划4——链表基础操作
链表基础操作链表思路:双指针迭代链表反转一个单链表。思路:反转单链表,这道题可以使用迭代法/递归法双指针迭代我们可以申请两个指针,第一个指针叫 pre,最初是指向 null 的。第二个指针 cur 指向 head表头,然后不断遍历 cur。每次迭代到 cur,都将 cur 的 next 指向 pre,然后 pre 和 cur 前进一位。都迭代完了(cur 变成 null 了),pre 就是最后一个节点了。中间有一个tmp变量,这个tmp变量会将cur的下一个节点保存起来。原创 2021-03-21 15:41:54 · 54 阅读 · 2 评论 -
付付的100刷题计划5——删除链表中重复元素(双指针法)
付付的100刷题计划5删除链表中重复元素思路:暴力求解法(笨方法)双指针法删除链表中重复元素删除重复元素,保留没有重复出现的数字思路:nums[i] ,下标从0开始,一直到len(nums)-1结束长度表示为len(nums)暴力求解法(笨方法)题目要求是去重,用哈希表记录每个值出现的频率即可:1 遍历链表,将每个节点的值放在哈希表中,哈希表的key就是节点的值,value就是这个值出现的频率2 遍历哈希表,将所有频率==1的key放在集合中3 对集合进行排序4 遍历集合 然后原创 2021-03-22 10:43:52 · 103 阅读 · 0 评论 -
付付的100刷题计划3——链表+递归
付付的100刷题计划3Leetcode3思路:Leetcode3将两个升序链表合并成一个新的升序链表。新链表是两个链表的所有节点组成思路:nums[i] ,下标从0开始,一直到len(nums)-1结束长度表示为len(nums)实际上,相比较数组来说,并不存在链表这样一个对象,链表是由多个节点组成的,因此,我们能接触到的数据对象只有节点。我们可以根据节点来寻找周围节点,许多节点之间的关系抽象地构成了一个链表class Solution: def mergeTwoLists(se原创 2021-03-20 16:39:44 · 100 阅读 · 0 评论 -
付付的100刷题计划2——哈希表+栈
付付的100刷题计划2哈希表+栈思路:哈希表+栈哈希表+栈给定不同的括号字符串s,s 仅由括号 ‘()[]{}’ 组成,让你判断字符串是否有效:左右括号必须同类型,左括号必须以正确的顺序闭合输入s输出“()”true“[]”true“([])”true“(]”false“{[]}”true“([)]”false思路:仔细发现,对于有效的括号,它的部分子表达式仍然是有效的括号,比如{【()】}它是一个有效的括号,部分表达式{【】}也原创 2021-03-19 11:19:11 · 71 阅读 · 0 评论 -
付付的100刷题计划1——两数之和哈希表
付付的100刷题计划1Leetcode1索引/下标:暴力求解法用python中的列表相关函数求解用字典模拟哈希求解更直观的方法Leetcode1两数之和:在数组中找出和为目标值的两个整数,并返回它们的数组索引下标numstarget[1,2,3,4,5]8索引/下标:nums[i] ,下标从0开始,一直到len(nums)-1结束长度表示为len(nums)暴力求解法依次循环列表中的每一个数,循环两次即可class Solution(object):原创 2021-03-18 21:27:22 · 113 阅读 · 0 评论