刷题笔记
文章平均质量分 64
记录学习过程,锻炼动手能力
sereasuesue
生命不息 奋斗不止
逆风的方向更适合飞翔
展开
-
计算三个数的最大乘积(Python)
计算三个数的最大乘积(Python)要求输出,最大三个数的下标和乘积, nums[]为无符号数字原创 2022-03-24 15:51:03 · 3909 阅读 · 1 评论 -
python刷题之快慢指针与二分查找
141. 环形链表难度简单986给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数pos来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果pos是-1,则在该链表中没有环。注意:pos不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回true。 否则,返回false。进阶:你能用O(1)(即,常量)内存解决此问题吗?...原创 2021-04-30 14:32:53 · 189 阅读 · 0 评论 -
BFS与 DFS题目练习(python)
107. 二叉树的层序遍历 II难度中等423给定一个二叉树,返回其节点值自底向上的层序遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其自底向上的层序遍历为:[ [15,7], [9,20], [3]]在102基础上直接翻转就可以得到https://blog.csdn.net/sereas..原创 2021-04-05 21:23:28 · 772 阅读 · 0 评论 -
LeetCode每日一题-合并两个有序数组
88. 合并两个有序数组难度简单878给你两个有序整数数组nums1和nums2,请你将nums2合并到nums1中,使nums1成为一个有序数组。初始化nums1和nums2的元素数量分别为m和n。你可以假设nums1的空间大小等于m + n,这样它就有足够的空间保存来自nums2的元素。示例 1:输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3 输出:[1,2,2,3,5,6]...原创 2021-04-05 21:09:22 · 413 阅读 · 0 评论 -
BFS和DFS的python实现(要记住)
BFS/DFS python模板与实现BFS模板1. 无需分层遍历while queue 不空: cur = queue.pop() for 节点 in cur的所有相邻节点: if 该节点有效且未访问过: queue.push(该节点)树的遍历'''树的遍历'''from collections import deque# Definition for a binary tree node.class TreeN原创 2021-04-05 20:04:21 · 7439 阅读 · 1 评论 -
LeetCode每日一题
191. 位1的个数难度简单290编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数(也被称为汉明重量)。提示:请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。 在 Java 中,编译器使用二进制补码记法来表示有符号整数。因此,在上面的示例 3中,输入表示有符号整数-3。示例 ...原创 2021-03-22 11:06:34 · 118 阅读 · 0 评论 -
python刷题之集合、哈希表常见操作及练习
集合集合是一个无序不重复元素的集。基本功能包括关系测试和消除重复元素。可以用大括号({})创建集合。注意:如果要创建一个空集合,你必须用 set() 而不是 {} ;后者创建一个空的字典,下一节我们会介绍这个数据结构。集合的基本操作1、添加元素语法格式如下:s.add( x )将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作。实例(Python 3.0+)>>>thisset=set(("Google","Runoob","T...原创 2021-03-16 19:20:36 · 589 阅读 · 0 评论 -
python实现堆的基本操作及堆相关练习
堆(heap)又被为优先队列(priority queue)。尽管名为优先队列,但堆并不是队列。回忆一下,在队列中,我们可以进行的限定操作是dequeue和enqueue。dequeue是按照进入队列的先后顺序来取出元素。而在堆中,我们不是按照元素进入队列的先后顺序取出元素的,而是按照元素的优先级取出元素。性质堆的实现通过构造二叉堆(binary heap),实为二叉树的一种;由于其应用的普遍性,当不加限定时,均指该数据结构的这种实现。这种数据结构具有以下性质。任意节点小于(或大于)它的原创 2021-03-16 15:28:52 · 1143 阅读 · 0 评论 -
python刷题之栈和队列
20. 有效的括号难度简单2228给定一个只包括'(',')','{','}','[',']'的字符串s,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。使用栈class Solution: def isValid(self, s: str) -> bool: if len(s) == 0: return True stack = [] ...原创 2021-03-12 19:22:43 · 481 阅读 · 0 评论 -
刷题之链表
链表相关19. 删除链表的倒数第 N 个结点难度中等1261收藏分享切换为英文接收动态反馈给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。进阶:你能尝试使用一趟扫描实现吗?示例 1:输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]示例 2:输入:head = [1], n = 1输出:[]示例 3:输入:head = [1,2], n = 1输出:[1]双指针一次扫描期初指针...原创 2021-03-10 15:52:41 · 103 阅读 · 0 评论 -
python刷题之链表常见操作
链表常用操作也可以把列表当做队列用,只是在队列里第一加入的元素,第一个取出来;但是拿列表用作这样的目的效率不高。在列表的最后添加或者弹出元素速度快,然而在列表里插入或者从头部弹出速度却不快(因为所有其他的元素都得一个一个地移动)from collections import dequelinkedlist=deque()#Add element#Time Complexity: 0(1)linkedlist.append( 1)linkedlist.append(2)linkedlis原创 2021-03-08 20:17:02 · 481 阅读 · 2 评论 -
day6刷题之二分搜索1
二分查找代码class Solution { public int searchInsert(int[] nums, int target) { int left = 0, right = nums.length-1; //注意循环条件 while (left <= right) { //求mid int mid = left + ((right - left ) >> 1);原创 2021-02-23 15:01:19 · 207 阅读 · 0 评论 -
day7刷题之二分搜索2
33. 搜索旋转排序数组难度中等1187收藏分享切换为英文接收动态反馈升序排列的整数数组nums在预先未知的某个点上进行了旋转(例如,[0,1,2,4,5,6,7]经旋转后可能变为[4,5,6,7,0,1,2])。请你在数组中搜索target,如果数组中存在这个目标值,则返回它的索引,否则返回-1。示例 1:输入:nums = [4,5,6,7,0,1,2], target = 0输出:4输入:nums = [4,5,6,7,0,1,2], target...原创 2021-02-20 10:48:40 · 105 阅读 · 0 评论 -
day5刷题之 删除排序数组中的重复项 II
80. 删除排序数组中的重复项 II难度中等361给定一个增序排列数组nums,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:输入:nums = [1,1,1,2,2,3]输出:5, nums = [1,1,2,2,3]解释:函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3 。 你不...原创 2021-02-20 09:54:31 · 139 阅读 · 0 评论 -
day4数组之 删除排序数组中的重复项
26删除排序数组中的重复项给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例2:给定 nums = [0,0,1,1,1,2,2,3,3,4],...原创 2021-02-18 15:26:23 · 130 阅读 · 0 评论 -
day3三数之和
给你一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例 1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例 2:输入:nums = []输出:[]示例 3:输入:nums = [0]输出:[]来源:力扣(LeetCode)链接:https://leetcode-c...原创 2021-02-14 16:46:35 · 186 阅读 · 1 评论 -
刷题之sum-closest
给定一个包括n 个整数的数组nums和 一个目标值target。找出nums中的三个整数,使得它们的和与target最接近。返回这三个数的和。假定每组输入只存在唯一答案。示例:输入:nums = [-1,2,1,-4], target = 1输出:2解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/3sum-closest著作权归领扣网络所有...原创 2021-02-14 21:47:09 · 133 阅读 · 2 评论 -
day2两数相加
给你两个非空 的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0开头。示例 1:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/add-two-numbersclass ListNode: def __init__(self, x): ...原创 2021-02-12 17:59:51 · 219 阅读 · 0 评论 -
Python刷题之两数之和
给定一个整数数组 nums和一个整数目标值 target,请你在该数组中找出 和为目标值 的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例 2:输入:nums = [3,2,4], target = 6输出:[1...原创 2021-02-11 16:12:16 · 345 阅读 · 0 评论