哈希表/双指针
文章平均质量分 50
知北行
不积跬步,无以至千里,不积小流,无以成江海
展开
-
算法---LeetCode 149. 直线上最多的点数
1. 题目原题链接给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上。示例 1:输入: [[1,1],[2,2],[3,3]]输出: 3解释:^|| o| o| o±------------>0 1 2 3 42. 题解2.1 解法1:每次先选定一个点, 然后计算之后的点与其的斜率, 并将斜率为 key 存入哈希表中, 哈希表的 value存储点的个数, 斜率相同即两点在同一条直线上注意可能存在重复的点, 额外使原创 2021-05-16 17:28:11 · 206 阅读 · 0 评论 -
算法---LeetCode 166. 分数到小数
1. 题目原题链接给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以 字符串形式返回小数 。如果小数部分为循环小数,则将循环的部分括在括号内。如果存在多个答案,只需返回 任意一个 。对于所有给定的输入,保证 答案字符串的长度小于 104 。示例 1:输入:numerator = 1, denominator = 2输出:“0.5”示例 2:输入:numerator = 2, denominator = 1输出:“2”2. 题解2.1 解法1:原创 2021-05-16 15:56:13 · 196 阅读 · 0 评论 -
算法---LeetCode 454. 四数相加 II
1. 题目原题链接给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。为了使问题简单化,所有的 A, B, C, D 具有相同的长度 N,且 0 ≤ N ≤ 500 。所有整数的范围在 -228 到 228 - 1 之间,最终结果不会超过 231 - 1 。例如:输入:A = [ 1, 2]B = [-2,-1]C = [-1, 2]D = [ 0, 2]输出:2原创 2021-05-16 11:12:21 · 111 阅读 · 0 评论 -
算法---LeetCode 36. 有效的数独
1. 题目原题链接请你判断一个 9x9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图)数独部分空格内已填入了数字,空白格用 ‘.’ 表示。注意:一个有效的数独(部分已被填充)不一定是可解的。只需要根据以上规则,验证已经填入的数字是否有效即可。示例 1:输入:board =[[“5”,“3”,".",".",“原创 2021-05-16 10:54:54 · 120 阅读 · 0 评论 -
算法---LeetCode 204. 计数质数
1. 题目原题链接统计所有小于非负整数 n 的质数的数量。示例 1:输入:n = 10输出:4解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。示例 2:输入:n = 0输出:02. 题解2.1 解法1: 暴力枚举(超时) class Solution { public int countPrimes(int n) { int ans = 0; boolean flag = true;原创 2021-05-14 19:52:12 · 104 阅读 · 0 评论 -
算法---LeetCode 28. 实现 strStr()
1. 题目原题链接实现 strStr() 函数。给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。说明:当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与 C 语言的 strstr() 以及 Java 的 indexOf() 定义相符。示例 1:输入:haysta原创 2021-05-14 16:37:11 · 95 阅读 · 0 评论 -
算法---LeetCode 125. 验证回文串
1. 题目原题链接给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: “A man, a plan, a canal: Panama”输出: true示例 2:输入: “race a car”输出: falseRelated Topics 双指针 字符串???? 382 ???? 02. 题解2.1 解法1: 双指针注意点:涉及判断就要加上 i<j判断其是否为数字或字母时注意原创 2021-05-14 15:36:01 · 67 阅读 · 0 评论 -
算法---LeetCode 387. 字符串中的第一个唯一字符
1. 题目原题链接给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。示例:s = “leetcode”返回 0s = “loveleetcode”返回 2提示:你可以假定该字符串只包含小写字母。Related Topics 哈希表 字符串???? 386 ???? 02. 题解2.2 解法1: 两次遍历+哈希表第一次遍历, 记录不重复的元素到哈希表中第二次遍历, 从前往后在哈希表中查找是否存在, 存在即返回 class Soluti原创 2021-05-14 11:20:45 · 70 阅读 · 0 评论 -
算法---LeetCode 350. 两个数组的交集 II
1. 题目原题链接给定两个数组,编写一个函数来计算它们的交集。示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2,2]示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[4,9]说明:输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。我们可以不考虑输出结果的顺序。进阶:如果给定的数组已经排好序呢?你将如何优化你的算法?如果 nums1 的大小比 nums2 小很多,哪种方法更原创 2021-05-14 10:53:23 · 85 阅读 · 0 评论 -
算法---LeetCode 202. 快乐数
1. 题目原题链接编写一个算法来判断一个数 n 是不是快乐数。「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。如果 n 是快乐数就返回 true ;不是,则返回 false 。示例 1:输入:19输出:true解释:12 + 92 = 8282 + 22 = 6862 + 82 = 10012 + 02 + 02 = 1示例 2:原创 2021-05-13 21:41:15 · 278 阅读 · 0 评论 -
算法---LeetCode 344. 反转字符串
1. 题目原题链接编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1:输入:[“h”,“e”,“l”,“l”,“o”]输出:[“o”,“l”,“l”,“e”,“h”]示例 2:输入:[“H”,“a”,“n”,“n”,“a”,“h”]输出:[“h”,“a”,“n”,“n”,“a”,原创 2021-05-13 16:58:11 · 118 阅读 · 0 评论 -
算法---LeetCode 242. 有效的字母异位词
1. 题目原题链接给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1:输入: s = “anagram”, t = “nagaram”输出: true示例 2:输入: s = “rat”, t = “car”输出: false说明:你可以假设字符串只包含小写字母。2. 题解2.1 题解1代码1:class Solution { public boolean isAnagram(String s, String t) {原创 2021-05-13 16:50:33 · 97 阅读 · 0 评论 -
算法---LeetCode 76. 最小覆盖子串
1. 题目原题链接给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 “” 。注意:如果 s 中存在这样的子串,我们保证它是唯一的答案。示例 1:输入:s = “ADOBECODEBANC”, t = “ABC”输出:“BANC”示例 2:输入:s = “a”, t = “a”输出:“a”提示:1 <= s.length, t.length <= 105s 和 t 由英文字母组成进原创 2021-05-12 17:13:46 · 188 阅读 · 0 评论 -
算法---LeetCode 347. 前 K 个高频元素
1. 题目原题链接给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]提示:1 <= nums.length <= 105k 的取值范围是 [1, 数组中不相同的元素的个数]题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合是唯一的进阶:你所设原创 2021-04-27 16:50:36 · 436 阅读 · 0 评论 -
算法---LeetCode 136. 只出现一次的数字
1. 题目原题链接给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4Related Topics 位运算 哈希表???? 1829 ???? 02. 题解2.1 解法1: 哈希表遍历数组, 使用 HashSet 存储, 先判断元素是否存在, 若存在, 删除元素, 不存转载 2021-04-27 11:01:20 · 83 阅读 · 0 评论