
LeetCode
文章平均质量分 51
python可运行代码,带有测试用例
slaythedragon
Shut up and Run
展开
-
LeetCode2.AddTwoNumbers两数相加(Java可运行,带测试用例)
给你两个的链表,表示两个非负的整数。它们每位数字都是按照的方式存储的,并且每个节点只能存储数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。[1, 100]原创 2024-01-03 15:29:28 · 705 阅读 · 0 评论 -
Java实现给定区间的奇数自然数的和
写一个类,包含一个方法,计算给定区间的奇数自然数的和。main方法中根据用户输入的2个数作为起始区间值调用该类的方法,然后将结果打印。原创 2022-08-26 01:02:43 · 702 阅读 · 0 评论 -
LeetCode SQL 176、177 、184 、185
LeetCode SQL176. Second Highest Salary(1)题目(2)题解176. Second Highest Salary(1)题目Write a SQL query to get the second highest salary from the Employee table.编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) 。±—±-------+| Id | Salary |±—±-------+| 1 | 100 |原创 2021-09-02 10:57:23 · 390 阅读 · 0 评论 -
LeetCode455.Assign Cookies分发饼干(贪心算法)(Python可运行,带测试用例)
一、题目假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。二、题解贪心思想:先满足胃口小的孩子1.先对孩子胃口和饼干尺寸分别排序2.遍历孩子胃口和饼干尺寸胃口比饼干尺寸小,孩子i原创 2021-06-17 12:50:13 · 340 阅读 · 0 评论 -
堆排序及python中heapq堆详解
堆排序及python中heapq堆详解一、知识点1. 大根堆和小根堆二、堆排序基本步骤2.1 构造堆2.2 固定最大值再构造堆三、python中heapq堆详解一、知识点堆的结构可以分为大根堆和小根堆,是一个完全二叉树,而堆排序是根据堆的这种数据结构设计的一种排序。1. 大根堆和小根堆性质:每个结点的值都大于其左孩子和右孩子结点的值,称之为大根堆;每个结点的值都小于其左孩子和右孩子结点的值,称之为小根堆。如下图我们对上面的图中每个数都进行了标记,上面的结构映射成数组就变成了下面这个样子还有一原创 2021-05-25 13:39:05 · 964 阅读 · 0 评论 -
LeetCode704.Binary Search二分查找(Python可运行,带测试用例)
一、题目给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。二、题解二分查找是一种基于比较目标值和数组中间元素的教科书式算法。如果目标值等于中间元素,则找到目标值。如果目标值较小,继续在左侧搜索。如果目标值较大,则继续在右侧搜索。算法:初始化指针 left = 0, right = n - 1。当 left <= right: 比较中间元素 nums[pivot]原创 2021-05-25 10:42:42 · 351 阅读 · 0 评论 -
冒泡排序、选择排序、快速排序Python实现
一、算法简介快速排序采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。该方法的基本思想是:1.先从数列中取出一个数作为基准数。(这里选择第一个数)2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。3.再对左右区间重复第二步,直到各区间只有一个数。其执行流程可以概括为:每一趟排序选择当前所有子序列的一个关键字(通常是第一个)作为枢轴量,将子序列中比枢轴量小的移到枢轴前边,比枢轴大的移到枢轴后边,具体过程是一个交替扫描和交换的过程原创 2021-05-24 11:36:08 · 544 阅读 · 0 评论 -
剑指Offer40.最小的k个数(快排、堆排序)(Python可运行,带测试用例)
一、题目输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。二、题解class Solution: def getLeastNumbers(self, arr, k): arr.sort() # 同arr[0:k],从开头取到第k个 return arr[:k]s = Solution()print(s.getLeastNumbers([3, 2, 1],原创 2021-05-22 13:07:42 · 308 阅读 · 0 评论 -
LeetCode206.Reverse Linked List反转链表(Python可运行,带测试用例)
一、题目给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。二、思路原创 2021-05-22 12:36:56 · 464 阅读 · 0 评论 -
LeetCode5&647回文子串(动态规划)(Python带测试用例)
一、题目给你一个字符串 s,找到 s 中最长的回文子串。二、思路1.动态规划概要动态规划法:把一个复杂问题分解为若干个相互重叠的子问题。动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中,可能会有许多可行解。每一个解都对应于一个值,我们希望找到具有最优值的解。动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,适合于用动态规划求解的问题,经分解得到子问题往往不是互相独立的。若用分治法来解这类问题,则分原创 2021-05-21 14:37:08 · 635 阅读 · 0 评论 -
LeetCode1.Two Sum两数之和(哈希表法)(Python可运行,带测试用例)
一、题目给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。二、题解class Solution: def twoSum(self, nums, target) : n = len(nums) # 枚举在数组中所有的两个不同的下标的组合 # 左闭右开,到n即可 for i原创 2021-05-20 23:09:59 · 700 阅读 · 0 评论 -
LeetCode160.Intersection of Two Linked Lists相交链表(Python带测试用例)
一、题目编写一个程序,找到两个单链表相交的起始节点。二、思路A和B两个链表长度可能不同,但是A+B和B+A的长度是相同的,所以遍历A+B和遍历B+A一定是同时结束。如果A,B相交的话A和B有一段尾巴是相同的,所以两个遍历的指针一定会同时到达交点 如果A,B不相交的话两个指针就会同时到达A+B(B+A)的尾节点。三、题解class ListNode: def __init__(self, x): self.val = x self.next = None原创 2021-05-20 16:11:21 · 192 阅读 · 0 评论 -
LeetCode141.Linked List Cycle环形链表(Python可运行,带测试用例)
@[TOC](LeetCode141.Linked List Cycle环形链表(Python))一、题目给定一个链表,判断链表中是否有环。二、题解class ListNode: def __init__(self, x): self.val = x self.next = Nonedef make_list(arr): head_node = None p_node = None for a in arr: new原创 2021-05-20 15:57:44 · 217 阅读 · 0 评论