
leetcode
请叫我算术嘉
快手HDFS
展开
-
【LeetCode】检查替换后的词是否有效
题目描述给定有效字符串"abc"。对于任何有效的字符串 V,我们可以将 V 分成两个部分 X 和 Y,使得 X + Y(X 与 Y 连接)等于 V。(X或 Y 可以为空。)那么,X + "abc" + Y 也同样是有效的。例如,如果 S = "abc",则有效字符串的示例是:"abc","aabcbc","abcabc","abcabcababcc"。无效字符串的示例是:"abccba","ab","cababc","bac"。如果给定字符串 S 有效,则返回 true;否则,返回 fa..原创 2020-06-07 11:39:14 · 4683 阅读 · 0 评论 -
【LeetCode】BiNode
题目描述二叉树数据结构TreeNode可用来表示单向链表(其中left置空,right为下一个链表节点)。实现一个方法,把二叉搜索树转换为单向链表,要求值的顺序保持不变,转换操作应是原址的,也就是在原始的二叉搜索树上直接修改。返回转换后的单向链表的头节点。简单来说就是把二叉搜索树变成链表,不过是原地修改,改完的树只有右边节点解题思路中序遍历,根左右package treenode;public class convertBiNode { public static v原创 2020-05-28 10:18:39 · 4197 阅读 · 1 评论 -
【LeetCode】可被 5 整除的二进制前缀
题目描述输入:[0,1,1]输出:[true,false,false]解释:输入数字为 0, 01, 011;也就是十进制中的 0, 1, 3 。只有第一个数可以被 5 整除,因此 answer[0] 为真。解题思路我们不关心当前的二进制数转为的十进制数是几,不管它是几,这个二进制数下一个高位如果是1,那么就是这个二进制数*2+1,那么只需要关心二进制数对应十进制数的最后一位,反正是乘法。所以只要记录末尾那个数字就行package com.company;import java.原创 2020-05-22 05:57:45 · 4235 阅读 · 0 评论 -
【LeetCode】验证回文字符串 Ⅱ
解题思路从两端开始往中间遍历,遇到不是回文的,就判断去掉之后是不是回文,这里可以去掉左边的也可以去掉右边的代码package strings;public class validPalindrome { public static boolean validPalindrome(String s) { int length = s.length(); for(int i = 0; i < length;){ if(s.原创 2020-05-20 10:04:39 · 4065 阅读 · 0 评论 -
【LeetCode】反转链表 II
解题思路先移动节点到要反转的地方,反转链表就比较简单了,然后把当前节点和反转的链表以及后面的第一个节点的串起来即可代码/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public ListNode r原创 2020-05-17 15:50:27 · 4075 阅读 · 0 评论 -
【LeetCode】层数最深叶子节点的和(python)
题目描述给你一棵二叉树,请你返回层数最深的叶子节点的和解题思路深度搜索优先遍历二叉树,先找到叶子节点,然后求和# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def __in原创 2020-05-10 19:09:07 · 4555 阅读 · 0 评论 -
【Java】 买卖股票的最佳时机含手续费
解题思路动态规划dp[i][j]表示第i天持股(j=1)不持股(j=0)的最大收益初始状态,第0天持股的最大收益dp[0][1] = -price[0] - fee = -(第0天股票的费用+卖出去的手续费)因为,你持股不卖一定比持股卖掉收益大初始状态,第0天不持股的最大收益dp[0][0] = 0,状态转移方程就很好想了,见代码class Solution { pu...原创 2020-05-04 12:31:08 · 4074 阅读 · 0 评论 -
【Java】用最少数量的箭引爆气球
package greedy;import java.util.Arrays;import java.util.Comparator;public class findMinArrowShots { public static void main(String[] args){ int[][] p = {{10,16}, {2,8}, {1,6}, {7,12...原创 2020-04-21 22:35:45 · 3962 阅读 · 1 评论 -
【Java】返回倒数第 k 个节点
题目描述实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。注意:本题相对原题稍作改动示例:输入: 1->2->3->4->5 和 k = 2输出: 4说明:给定的k保证是有效的。解题思路我这里给出两种解法第一种:1、找到链表的长度n2、把头结点往后挪n-k个/** * Definition for s...原创 2020-04-18 14:01:56 · 320 阅读 · 1 评论 -
【Java】动态规划不同路径 I
先看第一题题目描述一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?示例1输入: m = 3, n = 2输出: 3解释:从左上角开始,总共有 ...原创 2020-04-13 17:42:39 · 234 阅读 · 0 评论 -
【Java】01 矩阵
题目描述给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的距离。两个相邻元素间的距离为 1 。示例 1:输入:0 0 00 1 00 0 0输出:0 0 00 1 00 0 0示例 2:输入:0 0 00 1 01 1 1输出:0 0 00 1 01 1 1注意:给定矩阵的元素个数不超过 10000。给定...原创 2020-04-11 22:32:15 · 439 阅读 · 0 评论 -
【Java】解码方法
题目描述一条包含字母A-Z的消息通过以下方式进行了编码:'A' -> 1'B' -> 2...'Z' -> 26给定一个只包含数字的非空字符串,请计算解码方法的总数。示例 1:输入: "12"输出: 2解释: 它可以解码为 "AB"(1 2)或者 "L"(12)。示例 2:输入: "226"输出: 3解释: 它可以解码为 "BZ...原创 2020-04-11 15:02:39 · 568 阅读 · 0 评论 -
【Java】最长回文子串
题目描述给定一个字符串s,找到s中最长的回文子串。你可以假设s的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"解题思路一、暴力法class Solution { public String longestPalindrome(S...原创 2020-04-08 15:33:31 · 571 阅读 · 0 评论 -
【Java】最长回文串
题目描述给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。在构造过程中,请注意区分大小写。比如"Aa"不能当做一个回文字符串。注意:假设字符串的长度不会超过 1010。示例 1:输入:"abccccdd"输出:7解释:我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。1、这道题不需要你给出具体的回文串构造,只...原创 2020-04-08 14:09:25 · 384 阅读 · 0 评论 -
【Java】扑克牌中的顺子
题目描述从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。示例1:输入: [1,2,3,4,5]输出: True示例2:输入: [0,0,1,2,5]输出: True限制:数组长度为 5数组的数取值为 [0, 13] ....原创 2020-04-05 14:28:45 · 652 阅读 · 0 评论 -
【Java】构建乘积数组
假设有n个数分别构造两个数组长度都是n一个表示a[0]-a[i-1]也就是每个a[i]左边的数的积另一个表示a[i+1]-a[n-1]也就是a[i]右边边的数的积下面的方法简化了右边积的数组构建class Solution { public int[] constructArr(int[] a) { int[] res = new int[a.leng...原创 2020-04-01 17:48:20 · 294 阅读 · 0 评论 -
【Java】圆圈中最后剩下的数字
方法一:模拟过程class Solution { public int lastRemaining(int n, int m) { boolean[] arr = new boolean[n]; // 一开始所有都为true for(int i = 0;i < n;i++){ arr[i] = true;...原创 2020-03-31 21:49:33 · 197 阅读 · 0 评论 -
【Java】青蛙跳台阶问题(递归+备忘录)
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n级的台阶总共有多少种跳法。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 1:输入:n = 2输出:2示例 2:输入:n = 7输出:21提示:0 <= n <= 100解题思路很自然想到递归,但是开销很...原创 2020-03-27 00:00:15 · 765 阅读 · 0 评论 -
【Java】两个数组的交集 II
题目描述给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2,2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [4,9]说明:输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。我们可以不考虑输出结果的顺序。...原创 2020-03-25 23:45:19 · 513 阅读 · 0 评论 -
【Java】被围绕的区域(DFS)
题目描述给定一个二维的矩阵,包含 'X' 和 'O'(字母 O)。找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充。示例:X X X XX O O XX X O XX O X X运行你的函数后,矩阵变为:X X X XX X X XX X X XX O X X解题思路DFS+递归寻找和边界联通的'O',其他的'O‘都...原创 2020-03-25 16:02:26 · 13552 阅读 · 0 评论 -
Leetcode【1103】 Distribute Candies to People(Python版)
返回的是一个固定长度的列表,在python中,无法通过像java的初始化数组来实现,那么就必须赋值ans = [0] * num_people然后定义一个变量give表示每次给的糖果数,这个数每次都会+1把give和总人数取余,就是索引,因为要不停的遍历每个孩子,假设4个孩子,索引就是0,1,2,3,0,1,2,3,......class Solution: def d...原创 2020-03-05 18:03:04 · 4625 阅读 · 3 评论 -
Leetcode【441】排列硬币(Java版)
二分法class Solution { public int arrangeCoins(int n) { long l = 0; long r = n; while(l <= r){ long m = l + (r-l) / 2; long sum = (1 + m) * m / 2...原创 2020-02-18 22:36:04 · 6112 阅读 · 0 评论 -
Leetcode【989】Add to Array-Form of Integer(Python版)
傻瓜式class Solution(object): def addToArrayForm(self, A, K): """ :type A: List[int] :type K: int :rtype: List[int] """ a = '' for i in A: ...原创 2020-02-15 22:07:11 · 6492 阅读 · 0 评论 -
Leetcode【111】1-bit and 2-bit Characters(Python)版
class Solution(object): def isOneBitCharacter(self, bits): """ :type bits: List[int] :rtype: bool """ i = 0 while i < len(bits) - 1: ...原创 2020-02-05 20:49:01 · 7295 阅读 · 0 评论 -
Leetcode【112】Path Sum(Java版)附TreeNode测试代码
递归package com.company;class TreeNode{ int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; }}public class hasPathSum { /* 1 / \ 2 3...原创 2020-02-05 17:09:31 · 7424 阅读 · 0 评论 -
Leetcode【36】Valid Sudoku(Python版)
1、列表生成式# 行rows = [{} for i in range(9)]# 列columns = [{} for i in range(9)]# 9个小格boxes = [{} for i in range(9)]2、python字典的get方法dict.get(key, default=None)如果key不存在,返回第二个参数,如果没有指定第二个参数,返回N...原创 2020-02-05 14:50:16 · 7389 阅读 · 0 评论 -
Leetcode【1】twoSum(Python)
暴力法class Solution(object): def twoSum(self,nums,target): """ :type nums: List[int] :type target: int :rtype: List[int] """ for i in range(len(num...原创 2020-01-31 15:59:21 · 7416 阅读 · 0 评论 -
Leetcode【43】Multiply Strings
package com.company;import java.util.Arrays;public class multiply { public static void main(String[] args){ multiply test = new multiply(); System.out.println(test.multiply("...原创 2020-01-30 17:29:04 · 7308 阅读 · 0 评论 -
Leetcode【24】Swap Nodes in Pairs(Java版)附ListNode测试代码
递归举个栗子,1->2->3->4,因为是递归,首先完成3->4的交换,然后1->3->4,再把2的next指向1,就是2->1->4->3package com.company;class ListNode { public int val; public ListNode next; public L...原创 2020-01-27 20:34:23 · 7361 阅读 · 0 评论 -
Leetcode【15】3Sum(Java)
1、总体思路是三个数,摁住一个,另外两个双指针2、如果第一数就大于0了,那就肯定不用循环了,因为数组已经经过排序了3、去重对于while(i < j && nums[i] == nums[++i]); while(i < j && nums[j] == nums[--j]);假设此时i=1,那么++i就是2,比较nums[1]和num...原创 2020-01-21 13:27:42 · 7325 阅读 · 0 评论 -
Leetcode【11】Container With Most Water
先看代码class Solution { public int maxArea(int[] height) { int i = 0, j = height.length - 1, res = 0; while(i < j){ // a > b ? a : b res = height[i]...原创 2020-01-18 22:22:47 · 7236 阅读 · 0 评论 -
Leetcode【101】Symmetric Tree (Python版)
python函数中定义函数,只能这么写# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass S...原创 2020-01-16 13:52:15 · 7243 阅读 · 0 评论 -
Leetcode【101】Symmetric Tree (Java版)
递归,借助一个函数来实现boolean是表示你的方法返回的值类型/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x;...原创 2020-01-16 13:45:02 · 7142 阅读 · 0 评论 -
Leetcode【39】Combination Sum(Java版)
这是一道典型的回溯法具体回溯法的入门参考我的一篇博客https://blog.youkuaiyun.com/ssjdoudou/article/details/103988511这里我们关心的是数组,因为可以重复添加,所以每次遍历都是从第一个开始,不管当前的临时列表有几个值,我们都把候选列表从第一个开始往后试,如果不对,就剪枝(退回上一步),然后再用backtrack去试package co...原创 2020-01-15 15:51:47 · 7168 阅读 · 0 评论 -
Leetcode【191】Number of 1 Bits
这道题的输入是一个无符号的整数有两种办法解法一、暴力解把整数变成字符串,遍历字符串查找1的个数,注意,这里不能用String.valueOfpublic class Solution { // you need to treat n as an unsigned value public int hammingWeight(int n) { Str...原创 2020-01-12 16:34:12 · 7174 阅读 · 0 评论 -
Leetcode【1299】Replace Elements with Greatest Element on Right Side
解法一、暴力法,正序,每次找当前元素之后所有元素的最大值,简洁明了,就是会超时class Solution { public int[] replaceElements(int[] arr) { int l = arr.length; int[] ans = new int[l]; for(int i=0;i<l-1;i+...原创 2020-01-11 23:10:11 · 7300 阅读 · 0 评论 -
Leetcode【111】Find N Unique Integers Sum up to Zero(Python版)
Pythonicclass Solution: def sumZero(self, n: int) -> List[int]: return range(1-n, n, 2)菜鸟版class Solution(object): def sumZero(self, n): """ :type n: int ...原创 2020-01-11 13:50:17 · 7273 阅读 · 0 评论 -
Leetcode【111】Find N Unique Integers Sum up to Zero(Java版)
举个栗子就明白了n = 5那么生成的就是[-4,-2,0,2,4]class Solution { public int[] sumZero(int n) { int[] ans = new int[n]; int i = 0; int j = -n + 1; while(i < n){ ...原创 2020-01-11 13:48:33 · 7253 阅读 · 0 评论 -
Leetcode【1309】Decrypt String from Alphabet to Integer Mapping(Python版)
两种思路,正着算,反着算正着算比较麻烦,会出现索引访问不到的情况,因为你要判断i+2是否是“#”,那就补个0反着算简单一点这里的核心思想不是条件判断而是映射关系,a对应的ASCII是97,a在本题对应1,那么由数字推导到字母就是+96chr可以把字母对应的ASCII码转化为字母解法一class Solution: def freqAlphabets(self, s...原创 2020-01-10 22:49:13 · 7110 阅读 · 0 评论 -
Leetcode【1295】Find Numbers with Even Number of Digits(Python版)
class Solution(object): def findNumbers(self, nums): """ :type nums: List[int] :rtype: int """ # 列表推导式 return len([i for i in nums if len(str(i)) %...原创 2020-01-10 15:04:26 · 7106 阅读 · 0 评论