python
mmmmmmonica
走呀走呀走远了
展开
-
60-合并K个排序链表-LeetCode23(python)
题目描述合并k个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例输入:[ 1->4->5, 1->3->4, 2->6]输出: 1->1->2->3->4->4->5->6思路一暴力方法,把所有链表的节点读入一个数组中,对数组进行排序后,转化成一个链表输出代码一# D...原创 2019-12-03 10:52:16 · 276 阅读 · 0 评论 -
48-数组--LeetCode(python)
题目描述给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的绝对值最大为 k。示例示例 1:输入: nums = [1,2,3,1], k = 3输出: true示例 2:输入: nums = [1,0,1,1], k = 1输出: true示例 3:输入: nums = [...原创 2019-01-07 09:43:04 · 404 阅读 · 0 评论 -
47-数组-存在重复元素-LeetCode217(python)
题目描述给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。示例示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例 3:输入: [1,1,1,3,3,4,3,2,4,2]输出: true解决思路用到set的特性,...原创 2019-01-07 09:02:53 · 273 阅读 · 0 评论 -
46-数组-矩阵置零-LeetCode73(python)
题目描述给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。示例输入: [ [1,1,1], [1,0,1], [1,1,1]]输出: [ [1,0,1], [0,0,0], [1,0,1]]输入: [ [0,1,2,0], [3,4,5,2], [1,3,1,5]]输出: [ ...原创 2019-01-07 08:56:45 · 393 阅读 · 0 评论 -
45-数组-搜索插入位置-LeetCode25(python)
题目描述给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0...原创 2018-12-30 20:06:31 · 238 阅读 · 0 评论 -
44-数组移除元素-LeetCode27 (python)
题目描述给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 n...原创 2018-12-30 19:35:35 · 265 阅读 · 0 评论 -
37-数组-两数之和II-LeetCode167(python)
题目描述给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。说明:返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例输入: numbers = [2, 7, 11, ...原创 2018-12-12 08:45:32 · 247 阅读 · 0 评论 -
43-数组-删除排序数组中的重复项-LeetCode026 (python)
题目描述给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例示例 1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。...原创 2018-12-27 17:20:06 · 206 阅读 · 0 评论 -
36.数组-买卖股票的最佳时机II-Leetcode 122(python)
题目描述给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的...原创 2018-12-10 09:47:10 · 244 阅读 · 0 评论 -
35.数组-杨辉三角II-Leetcode 119(python)
题目描述给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例输入: 3输出: [1,3,3,1]解决思路跟上一题,也就是杨辉三角的区别在于这一次只要求输出最后一行,因此我还是用上一题的思路,只是在输出时变化了一下。另外是发现如果不把第二行的[1,1]放入循环中算法的话,算法的效率好像一下子快了非常多,但是...原创 2018-12-10 09:05:46 · 314 阅读 · 0 评论 -
42-数组-按奇偶排序数组-LeetCode905 (python)
题目描述给定一个非负整数数组 A,返回一个由 A 的所有偶数元素组成的数组,后面跟 A 的所有奇数元素。你可以返回满足此条件的任何数组作为答案。示例输入:[3,1,2,4]输出:[2,4,3,1]输出 [4,2,3,1],[2,4,1,3] 和 [4,2,1,3] 也会被接受。解决思路比较笨但可行的办法,用两个数组分别存放奇数和偶数,最后把两个数组合起来。代码clas...原创 2018-12-20 17:51:05 · 408 阅读 · 0 评论 -
41-数组-单调数列-LeetCode896(python)
题目描述如果数组是单调递增或单调递减的,那么它是单调的。如果对于所有 i <= j,A[i] <= A[j],那么数组 A 是单调递增的。 如果对于所有 i <= j,A[i]> = A[j],那么数组 A 是单调递减的。当给定的数组 A 是单调数组时返回 true,否则返回 false。示例示例 1:输入:[1,2,2,3]输出:true示例 2:...原创 2018-12-20 17:40:44 · 927 阅读 · 0 评论 -
40-数组-公平的糖果交换-LeetCode888(python)
题目描述爱丽丝和鲍勃有不同大小的糖果棒:A[i] 是爱丽丝拥有的第 i 块糖的大小,B[j] 是鲍勃拥有的第 j 块糖的大小。因为他们是朋友,所以他们想交换一个糖果棒,这样交换后,他们都有相同的糖果总量。(一个人拥有的糖果总量是他们拥有的糖果棒大小的总和。)返回一个整数数组 ans,其中 ans[0] 是爱丽丝必须交换的糖果棒的大小,ans[1] 是 Bob 必须交换的糖果棒的大小。...原创 2018-12-20 17:29:07 · 292 阅读 · 0 评论 -
39-数组-转置矩阵-LeetCode867(python)
题目描述给定一个矩阵 A, 返回 A 的转置矩阵。矩阵的转置是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。示例示例 1:输入:[[1,2,3],[4,5,6],[7,8,9]]输出:[[1,4,7],[2,5,8],[3,6,9]]示例 2:输入:[[1,2,3],[4,5,6]]输出:[[1,4],[2,5],[3,6]] 提示:1 <= A.le...原创 2018-12-19 16:26:10 · 220 阅读 · 0 评论 -
34.数组-杨辉三角-Leetcode 118(python)
题目描述给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例输入: 5输出:[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1]]解决思路思路就是根据行数来不断产生当前行的一维数组,并把当前的一维数组添加到整个三角形的二维数组里。...原创 2018-12-06 10:46:34 · 336 阅读 · 0 评论 -
31.动态规划-乘积最大子序列-Leetcode 152(python)
题目描述给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。示例示例 1:输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。示例 2:输入: [-2,0,-1]输出: 0解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。自己的错误思路自以为抄了足够多的动态规划的题了,怎么着也应该...原创 2018-12-03 11:07:04 · 1150 阅读 · 0 评论 -
51-数组-三数之和-LeetCode15(python)
题目描述给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]解决...原创 2019-06-26 09:20:16 · 455 阅读 · 0 评论 -
49-数组-分发饼干-LeetCode455(python)
要坚持才可以的,懈怠了三个多月,不好的。 题目描述假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有一个尺寸 sj。如果 sj >= gi,我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出...原创 2019-04-28 09:50:20 · 330 阅读 · 0 评论 -
52-数组-最接近的三数之和-LeetCode16(python)
题目描述给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。示例例如,给定数组 nums = [-1,2,1,-4], 和 target = 1. 与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).、思路用两个变量,一个来...原创 2019-06-27 09:12:58 · 277 阅读 · 0 评论 -
62-搜索旋转排序数组-LeetCode33(python)
题目描述假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示例示例 1:输入: nums = [4,5,6,...原创 2019-08-20 16:51:29 · 270 阅读 · 0 评论 -
61-最长有效括号-LeetCode32(python)
题目描述给定一个只包含 '('和 ')'的字符串,找出最长的包含有效括号的子串的长度。示例示例 1:输入: "(()"输出: 2解释: 最长有效括号子串为 "()"示例 2:输入: ")()())"输出: 4解释: 最长有效括号子串为 "()()"思路题解中的常规思路:找到字符串中可以匹配的括号对的下标,将这些下标汇总到一个数组中,排序,然后找排序后数组中最长...原创 2019-07-24 19:17:51 · 390 阅读 · 0 评论 -
59-合并两个排序链表-LeetCode21(python)
题目描述将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例输入:1->2->4, 1->3->4输出:1->1->2->3->4->4思路一官方题解之递归:忽略空链表的情况,那么merge两个链表的操作可以定义为两个列表中头部元素较小的一个,与另一个列表的merge。递归的出口就是...原创 2019-07-17 16:19:58 · 298 阅读 · 0 评论 -
58-删除链表的倒数第N个节点-LeetCode19(python)
题目描述给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。示例给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n保证是有效的。进阶:你能尝试使用一趟扫描实现吗?解决思路一官方题解中的第二种思路。首先使用哑节点,为了简化...原创 2019-07-17 11:45:34 · 274 阅读 · 0 评论 -
60-下一个排列-LeetCode31(python)
题目描述实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。示例以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1思路参照官方题解的思路。(1)首先从...原创 2019-07-23 16:12:36 · 187 阅读 · 0 评论 -
python 遍历字典
有两种方法若现有字典:Dict = {'Monica':12,"Edith":24,"Mary":48,"Ema",88}一、先取key值,通过dict[key]拿到valueDict = {'Monica':12,"Edith":24,"Mary":48,"Ema":88}for name in Dict: print(name,Dict[name])二、使...原创 2019-07-11 16:54:46 · 239 阅读 · 0 评论 -
56-最长回文串-LeetCode409(python)
题目描述给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。在构造过程中,请注意区分大小写。比如 "Aa" 不能当做一个回文字符串。注意:假设字符串的长度不会超过 1010。示例输入:"abccccdd"输出:7解释:我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。思路遍历字符串,对每一个字符出现的次数进行计数,出...原创 2019-07-11 16:45:43 · 289 阅读 · 0 评论 -
python 字典的get函数
语法dict.get(key,default = None)描述返回字典中指定键(key)的值,如果该键不存在的话,返回默认值(default)示例原创 2019-07-11 16:14:57 · 446 阅读 · 0 评论 -
python中defaultdict的用法
用法from collections import defaultdictdict = defaultdict(int)import collectionsdict = collections.defaultdict(int)官方定义class collections.defaultdict([default_factory[, ...]])default_factory...原创 2019-07-11 16:00:31 · 428 阅读 · 0 评论 -
57-最长回文串-LeetCode10(python)
题目描述给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配。'.' 匹配任意单个字符'*' 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。说明: s 可能为空,且只包含从 a-z 的小写字母。 p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。示例...原创 2019-07-15 15:01:10 · 212 阅读 · 0 评论 -
python中数组切片[:,i] [i:j:k] [:-i] [i,j,:k]
逗号“,”分隔各个维度,“:”表示各个维度内的切片,只有:表示取这个维度的全部值,举例说明如下1.二维数组X[:,0]取所有行的第0个数据,第二维下标位0的所有数据,第0列(从0开始)X[:,1] 取所有行的第1个数据X[:,1:]第一维全部取,即所有行,列上从第一列开始取,不要第0列X[1,:]是取第1维中下标为1的元素的所有数据,第1行(从0开始)X[:2,1:]第一维...转载 2019-07-15 11:45:56 · 403 阅读 · 0 评论 -
55-四数相加II-LeetCode454(python)
题目描述给定四个包含整数的数组列表 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 = ...原创 2019-07-10 15:12:16 · 320 阅读 · 0 评论 -
53-数组-电话号码的字母组合-LeetCode17(python)
题目描述给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].思路一pythons的列表推导式嵌套。代码一class Solution: de...原创 2019-07-03 15:06:23 · 270 阅读 · 0 评论 -
54-四数之和-LeetCode18(python)
题目描述给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等。找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组...原创 2019-07-08 15:51:44 · 168 阅读 · 0 评论 -
33.动态规划-最大正方形-Leetcode 221(python)
题目描述在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。示例输入: 1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4解决思路参考网友大神:如果我们能够判断一个点是正方形右下角的点的话,那么肯定可以确定它的左边、上边和左上三个点,分别都是某个正方形的右下角的点。关于边长:以当前点为右下角的正方...原创 2018-12-05 09:56:50 · 2031 阅读 · 0 评论 -
32.动态规划-打家劫舍II-Leetcode 213(python)
题目描述你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例示例 1:输入: [2,3,2]输...原创 2018-12-05 08:49:43 · 664 阅读 · 0 评论 -
17.环形链表-Leetcode 141(python)
题目描述给定一个链表,判断链表中是否有环。进阶:你能否不使用额外空间解决此题?解决思路自己想不出解决的思路,参照网友的解决方案,实在是非常巧妙,定义快慢指针,考虑如果链表中有环,那么快指针一定会追上慢指针。代码# Definition for singly-linked list.# class ListNode(object):# def __init__(se...原创 2018-10-19 17:31:29 · 232 阅读 · 0 评论 -
13.Z字形变换-Leetcode 006(python)
题目描述将字符串 "PAYPALISHIRING" 以Z字形排列成给定的行数:P A H NA P L S I I GY I R之后从左往右,逐行读取字符:"PAHNAPLSIIGYIR"实现一个将字符串进行指定行数变换的函数:string convert(string s, int numRows);示例示例 1:输入: s = "PAYPALI...原创 2018-10-10 15:33:34 · 211 阅读 · 0 评论 -
12.合并两个有序列表-Leetcode 021(python)
题目描述将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例输入:1->2->4, 1->3->4输出:1->1->2->3->4->4解决思路依次比较链表l1和l2中的每一个节点,将较小值放入合并链表中,要注意的是可能出现其中一个链表比较长的情况,那么直到比较结束后仍然不为空,此时只...原创 2018-10-09 15:41:33 · 358 阅读 · 0 评论 -
16.删除排序链表中的重复元素-Leetcode 083(python)
题目描述给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3解决思路一自己想到的,最笨的方法,用List存所有的数,去重之后再把List中的数字放到新的链表中,返回新链表。实质上并没有用...原创 2018-10-18 13:43:17 · 225 阅读 · 0 评论 -
11.有效的括号-Leetcode 020(python)
题目描述给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输出: false...原创 2018-10-08 09:23:58 · 211 阅读 · 0 评论