Leetcode
xinxiang7
毕业上海交通大学。主要从事深度学习的算法实现和研究。目前主要用的语言是python,框架为Tensorflow。做过斗地主AI,实现过一些有趣的项目。
展开
-
leetcode-430. 扁平化多级双向链表
扁平化多级双向链表思路:利用flatten_dfs(curr, curr.child)不断将child转化为prev和next,利用flatten_dfs(tail, tmpNext)将子链与父链连接起来。代码:"""# Definition for a Node.class Node: def __init__(self, val, prev, next, child): self.val = val self.prev = prev s原创 2020-07-24 17:35:43 · 107 阅读 · 0 评论 -
leetcode-394. 字符串解码
思路:利用栈辅助代码:class Solution: def decodeString(self, s: str) -> str: res = '' stack = [] mul = 0 for c in s: if c == '[': stack.append([mul, res]) mul = 0 r原创 2020-07-22 16:01:31 · 80 阅读 · 0 评论 -
leetcode-39-组合总和
题目:给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。思路:利用递归的方式代码:class Solution: def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]: candidates.sort()原创 2020-07-15 10:16:54 · 195 阅读 · 0 评论 -
leetcode-78-子集
题目给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3] 输出: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ]思路:利用递归的方法,保证每种情况都考虑到了。代码:class Solution: def subsets(self, nums: List[int]) -> List[List[int]]: output原创 2020-07-06 09:16:12 · 79 阅读 · 0 评论 -
leetcode-75-颜色分类
问题给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。`示例:输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]`解题思路分别找出0,1,2有多少个,之后再赋值到所需要到列表中。代码class Solution: def sortColors(self, nums:原创 2020-07-02 16:20:15 · 104 阅读 · 0 评论 -
leetcode-面试题 17.11. 单词距离
问题:有个内含单词的超大文本文件,给定任意两个单词,找出在这个文件中这两个单词的最短距离(相隔单词数)。如果寻找过程在这个文件中会重复多次,而每次寻找的单词不同,你能对此优化吗?示例:输入:words = ["I","am","a","student","from","a","university","in","a","city"], word1 = "a", word2 = "student" 输出:1提示:words.length <= 100000思路:查找这两个单词的位置,通过双原创 2020-07-02 02:11:11 · 1244 阅读 · 0 评论 -
leetcode-66-加1
题目给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3] 输出: [1,2,4] 解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1] 输出: [4,3,2,2] 解释: 输入数组表示数字 4321。解法class Solution: def plusOne(self, digits: List[int])原创 2020-06-30 23:52:20 · 140 阅读 · 0 评论 -
leetcode-581-最短无序连续子数组
最短无序连续子数组给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。你找到的子数组应是最短的,请输出它的长度。class Solution: def findUnsortedSubarray(self, nums: List[int]) -> int: sorted_nums = sorted(nums) start_index, end_index = len(nums), 0 fo原创 2020-05-28 00:04:03 · 92 阅读 · 0 评论 -
leetcode-28-实现 strStr()
实现strStr实现 strStr() 函数。实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。解决方法:class Solution: def strStr(self, haystack: str, needle: str) -> int: L, N = len(haystack), len(needle)原创 2020-05-26 23:14:03 · 108 阅读 · 0 评论 -
每日一算 Leetcode 977. 有序数组的平方
// C++/*给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。eg1:输入:[-4,-1,0,3,10]输出:[0,1,9,16,100]eg2:输入:[-7,-3,2,3,11]输出:[4,9,9,49,121]提示:1 <= A.length <= 10000-10000 <= A[i] <= 10...原创 2019-10-25 17:52:26 · 290 阅读 · 0 评论 -
每日一算 Leetcode 104.二叉树的最大深度
有两种方法:递归迭代-利用队列// C++/* 给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。*/ // 1. 利用递归...原创 2019-10-24 21:52:30 · 101 阅读 · 0 评论 -
每日一算 Leetcode 1051
// C++/* 学校在拍年度纪念照时,一般要求学生按照 非递减 的高度顺序排列。请你返回至少有多少个学生没有站在正确位置数量。该人数指的是:能让所有学生以 非递减 高度排列的必要移动人数。示例输入:[1,1,4,2,1,3]输出:3解释:高度为 4、3 和最后一个 1 的学生,没有站在正确的位置。*/// 解题思路:先复制,后排序,再对比,不同加1.可在排序上优化空间和时间。...原创 2019-10-24 17:35:56 · 267 阅读 · 0 评论