LeetCode
Janson666
仰望星空的码农
展开
-
Leetcode 刷题 - 贪心思想(day1)_分配饼干
1. 分配饼干455. Assign Cookies (Easy)Input: grid[1,3], size[1,2,4]Output: 2题目描述:每个孩子都有一个满足度 grid,每个饼干都有一个大小 size,只有饼干的大小大于等于一个孩子的满足度,该孩子才会获得满足。求解最多可以获得满足的孩子数量。1.给一个孩子的饼干应当尽量小并且又能满足该孩子,这样大饼干才能拿来给满足度比较大的孩子。2.因为满足度最小的孩子最容易得到满足,所以先满足满足度最小的孩子。在以上的解法中,我们只原创 2022-03-07 11:56:05 · 145 阅读 · 0 评论 -
Leetcode 刷题 - 排序(day4)_颜色排序
荷兰国旗问题荷兰国旗包含三种颜色:红、白、蓝。有三种颜色的球,算法的目标是将这三种球按颜色顺序正确地排列。它其实是三向切分快速排序的一种变种,在三向切分快速排序中,每次切分都将数组分成三个区间:小于切分元素、等于切分元素、大于切分元素,而该算法是将数组分成三个区间:等于红色、等于白色、等于蓝色。1. 按颜色进行排序75. Sort Colors (Medium)Input: [2,0,2,1,1,0]Output: [0,0,1,1,2,2]题目描述:只有 0/1/2 三种颜色。原创 2022-02-17 16:04:55 · 475 阅读 · 0 评论 -
Leetcode 刷题 -temp_136. 只出现一次的数字
题目描述:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4分析:本题的要求中,说明出现一次的数字只有一个,否则,该题就无法用 按位异或 的方式做。同时,该题限制不适用额外的空间,如果不限制,则直接使用map字原创 2022-02-13 15:47:38 · 5819 阅读 · 0 评论 -
Leetcode 刷题 - 排序(day3)_桶排序_按照字符出现次数对字符串排序
2. 按照字符出现次数对字符串排序451. Sort Characters By Frequency (Medium)Input:“tree”Output:“eert”Explanation:‘e’ appears twice while ‘r’ and ‘t’ both appear once.So ‘e’ must appear before both ‘r’ and ‘t’. Therefore “eetr” is also a valid answer.实现思路:1.建立m原创 2022-02-12 13:40:24 · 411 阅读 · 0 评论 -
Leetcode 刷题 - 排序(day2)_桶排序_Top K Frequent Elements
桶排序1. 出现频率最多的 k 个元素347. Top K Frequent Elements (Medium)Given [1,1,1,2,2,3] and k = 2, return [1,2].实现思想:设置若干个桶,每个桶存储出现频率相同的数。桶的下标表示数出现的频率,即第 i 个桶中存储的数出现的频率为 i。把数都放到桶之后,从后向前遍历桶,最先得到的 k 个数就是出现频率最多的的 k 个数。具体过程步骤:1.第一步:采用map字典,统计同一个数字出现的次数;2.第二步原创 2022-02-11 11:14:50 · 610 阅读 · 0 评论 -
Leetcode 刷题 - 排序(day1)_Kth Element问题
一、快速选择用于求解 Kth Element 问题,也就是第 K 个元素的问题。(此处的第k 个元素,指的是所给元素中,第k个大的数据,比如,求所给元素中第二个值最大的元素)可以使用快速排序的 partition()(该方法就是对数据用快速排序的方法进行排序的过程) 进行实现。需要先打乱数组,否则最坏情况下时间复杂度为 O(N2)。二、堆用于求解 TopK Elements 问题,也就是 K 个最小元素的问题。使用最小堆来实现 TopK 问题,最小堆使用大顶堆来实现,大顶堆的堆顶元素为当前堆的最大元原创 2022-01-12 14:56:48 · 439 阅读 · 0 评论 -
Leetcode 刷题 - 双指针6(day6)_最长子序列
6. 最长子序列524. Longest Word in Dictionary through Deleting (Medium)Input:s = “abpcplea”, d = [“ale”,“apple”,“monkey”,“plea”]Output:“apple”题目描述:删除 s 中的一些字符,使得它构成字符串列表 d 中的一个字符串,找出能构成的最长字符串。如果有多个相同长度的结果,返回字典序的最小字符串。通过删除字符串 s 中的一个字符能得到字符串 t,可以认为 t 是 s原创 2021-12-30 15:33:16 · 3030 阅读 · 0 评论 -
Leetcode 刷题 - 双指针5(day5)_归并两个有序数组
5. 归并两个有序数组88. Merge Sorted Array (Easy)Input:nums1 = [1,2,3,0,0,0], m = 3nums2 = [2,5,6], n = 3Output: [1,2,2,3,5,6]题目描述:把归并结果存到第一个数组上。需要从尾开始遍历,否则在 nums1 上归并得到的值会覆盖还未进行归并比较的值。代码实现:import java.util.ArrayList;/** * 5. 归并两个有序数组 * 88. Mer原创 2021-12-25 18:18:48 · 572 阅读 · 0 评论 -
Leetcode 刷题 - 双指针4(day4)_回文字符串
4. 回文字符串680. Valid Palindrome II (Easy)Input: “abca”Output: TrueExplanation: You could delete the character ‘c’.题目描述:可以删除一个字符,判断是否能构成回文字符串。所谓的回文字符串,是指具有左右对称特点的字符串,例如 “abcba” 就是一个回文字符串。使用双指针可以很容易判断一个字符串是否是回文字符串:令一个指针从左到右遍历,一个指针从右到左遍历,这两个指针同时移动一个位置,原创 2021-12-24 15:37:04 · 102 阅读 · 0 评论 -
Leetcode 刷题 - 双指针2_两数平方和(day2)
633. Sum of Square Numbers (Easy)Leetcode / 力扣Input: 5Output: TrueExplanation: 1 * 1 + 2 * 2 = 5题目描述:判断一个非负整数是否为两个整数的平方和。可以看成是在元素为 0~target 的有序数组中查找两个数,使得这两个数的平方和为 target,如果能找到,则返回 true,表示 target 是两个整数的平方和。本题和 167. Two Sum II - Input array is sort原创 2021-12-16 15:37:41 · 99 阅读 · 0 评论 -
Leetcode 刷题 - 双指针3(day3)_反转字符串中的元音字符
3. 反转字符串中的元音字符345. Reverse Vowels of a String (Easy)Leetcode / 力扣Given s = “leetcode”, return “leotcede”.使用双指针,一个指针从头向尾遍历,一个指针从尾到头遍历,当两个指针都遍历到元音字符时,交换这两个元音字符。为了快速判断一个字符是不是元音字符,我们将全部元音字符添加到集合 HashSet 中,从而以 O(1) 的时间复杂度进行该操作。时间复杂度为 O(N):只需要遍历所有元素一次原创 2021-12-21 09:27:36 · 102 阅读 · 0 评论 -
Leetcode 刷题 - 双指针1_有序数组的 Two Sum(day1)
Leetcode 题解 - 双指针有序数组的 Two Sum两数平方和反转字符串中的元音字符回文字符串归并两个有序数组判断链表是否存在环最长子序列双指针主要用于遍历数组,两个指针指向不同的元素,从而协同完成任务。1. 有序数组的 Two SumTwo Sum II - Input array is sorted (Easy)Leetcode / 力扣Input: numbers={2, 7, 11, 15}, target=9Output: index1=1, inde.原创 2021-12-14 14:47:41 · 154 阅读 · 0 评论