LeetCode
八卡卡
这个作者很懒,什么都没留下…
展开
-
leetCode 169 - 多数元素- 多数投票
题目给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。思路1.哈希表存一遍,再遍历找到出现次数大于 ⌊ n/2 ⌋ 的元素。2.对数组进行排序 中间的一定是出现次数大于 ⌊ n/2 ⌋ 的元素。3. 多数投票算法 定义一个cnt = 0 ,遇到和当前majorityElement相同的元素就cnt++ 否则-- 当cnt== 0 说明前面i个元素没有次数大于 ⌊ n/2 ⌋ 的元素,原创 2020-05-12 23:43:00 · 155 阅读 · 0 评论 -
leetcode 5 - 最长回文子串
题目给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”思路暴力解法找出长度超过最大长度的子串 然后判断是不是回文子串代码class Solution { public String longes...原创 2020-05-05 22:12:54 · 89 阅读 · 0 评论 -
LeetCode - 461 -汉明距离
题目两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。注意:0 ≤ x, y < 231.思路可以通过位运算判断 位运算二进制中有多少个1判断位运算得到的是一个十进制数看这个十进制数的二进制表示中有多少个1移位运算符x >> 1 相当于x右移一位 即 x/2x << 1 相当...原创 2020-05-01 19:45:59 · 124 阅读 · 0 评论 -
LeetCode - 448 - 找到所有数组中消失的数字
题目给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。找到所有在 [1, n] 范围之间没有出现在数组中的数字。您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。示例:输入:[4,3,2,7,8,2,3,1]输出:[5,6]思路题目要求不要使用...原创 2020-05-01 19:09:56 · 99 阅读 · 0 评论 -
LeetCode - 283 -移动零
题目给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]思路两次遍历第一次将非零的数放在nums[j] 结束后j记录非零的个数第二次将j之后的都置为零代码class Solution { public void moveZeroes(int[] nums) {...原创 2020-04-29 21:46:56 · 83 阅读 · 0 评论 -
LeetCode - 198 - 打家劫舍
题目你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 ...原创 2020-04-29 12:11:29 · 147 阅读 · 0 评论 -
LeetCode - 141 - 环形链表
题目给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。这个pos没什么用思路一: 用set存 如果存到重复值 说明有环时间复杂度:O(n)空间复杂度 O(n)二: 快慢指针 如果有环 快慢指针总会相遇时间复杂度 O(n)空间复杂度 O(1)代码pu...原创 2020-04-29 11:09:00 · 76 阅读 · 0 评论 -
LeetCode - 136 - 只出现一次的数字
题目给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4思路hashMap 存一遍 key 是nums[i] value 是出现次数最后找到出现次数为1的时间复...原创 2020-04-29 00:06:19 · 83 阅读 · 0 评论 -
LeetCode - 322 - 零钱兑换
题目给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。思路典型的动态规划问题假设amount 是 27coins 数组里面是2 5 7最后一步一定是 2 5 7想要25-2 / 25-5/ 25-7 是最优的那么之前也一定是最优的要满足这个条件就是 i-2 / i-...原创 2020-04-28 23:47:22 · 79 阅读 · 0 评论 -
LeetCode - 121 - 买股票的最佳时机
题目给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意:你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注...原创 2020-04-28 23:37:47 · 85 阅读 · 0 评论 -
LeetCode - 101 -对称二叉树
题目给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。1/ 2 2/ \ / 3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:1/ 2 2\ 3 3代码class Solution { public boolean isSymmetric(Tree...原创 2020-04-28 19:29:33 · 120 阅读 · 0 评论 -
LeetCode - 70 - 爬楼梯
题目假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。思路动态规划最后一步为1或者2所以f[i] = f[i-1] + f[i-2]f[i -1] 表示 最后走一个台阶的方法个数f[i -2] 表示最后走两个台阶的方法个数代码class Solution { public ...原创 2020-04-28 19:19:10 · 82 阅读 · 0 评论 -
LeetCode - 53 -最大子序列和
题目给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。思路动态规划做累加组合数 为sumsum>0 也就是说前面的组合对于当前的数来说是正增益继续加否则 负增益 开启一个新组合题目cl...原创 2020-04-28 19:05:26 · 106 阅读 · 0 评论 -
LeetCode - 21 -合并两个有序链表
题目将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4思路通过迭代需要注意的是 cur.next连接的是l1 而不是l1.val这样可以保证我们不需要重新创建cur 的新节点还要处理一下 一个为空 一个不...原创 2020-04-28 16:39:31 · 74 阅读 · 0 评论 -
leetCode - 20 - 有效的括号
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:题目左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false**示例 4:输入...原创 2020-04-28 16:24:54 · 75 阅读 · 0 评论 -
二分查找
public int search(int key, int[] array) { int l = 0, h = array.length - 1; while (l <= h) { int mid = l + (h - l) / 2; if (key == array[mid]) return mid; if (key <...原创 2020-04-17 19:20:29 · 78 阅读 · 0 评论 -
Tree -028 -对称的二叉树
题目请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:思路对称的条件为同时到达叶节点对称的节点值相同所以返回递归的时候返回的是L.right R.left ,L.left R.right...原创 2020-04-03 17:34:28 · 152 阅读 · 1 评论