随笔分类 -  LeetCode

总有一天能完成,期望提高思考的方法
摘要:problem 给出n天的价格,N天内先买后卖(允许一次),求最大盈利 一定要先买后卖,所以想法2,3不能随便取最大最小值 solution 想法 1. ~~嵌套遍历,每个差值都求出来~~ 2. 最小值 之后最大值 3. 转化为两两差值的list,求list和最大最小差值 4. 不用嵌套,遍历的次序 阅读全文
posted @ 2016-11-21 10:51 Salmd 阅读(114) 评论(0) 推荐(0)
摘要:problem 判断数字的最小因数是不是只有2,3,5; 是True,不是false 数字1视为True solution 直接除法运算, time limit exceeded ~~换一个思路,反过来,可以整除其他素数则返回False,问题转化为获取素数列表,求素数本身就是消耗时间的过程~~ di 阅读全文
posted @ 2016-11-21 10:50 Salmd 阅读(100) 评论(0) 推荐(0)
摘要:problem 用空格分割字符串,返回最后一个单词的长度 solution 注意空字符就行了 阅读全文
posted @ 2016-11-21 10:49 Salmd 阅读(93) 评论(0) 推荐(0)
摘要:problem 求第二个字符串在第一个字符串中的位置 注意,字符串不定长 solution range( 100) = [] 阅读全文
posted @ 2016-11-21 10:46 Salmd 阅读(82) 评论(0) 推荐(0)
摘要:problem 删除列表中给定的元素,返回删除后的列表长度n 列表中元素要删除,或者更改序列:列表前n个元素为理论上删除后的列表 solution 列表删除 改变列表排序 ~~如果不限行空间,还可考虑用Counter(总数量 val数量~~) 不行,列表本身要变化 阅读全文
posted @ 2016-11-21 10:45 Salmd 阅读(92) 评论(0) 推荐(0)
摘要:problem 题目有一点没说明白,以[1,2,3]为例,元素可以不连续比如[1,3] [1,3]和[3,1]是重复解,有一个就行了 solution 使用combinations求各种元素数量的下标组合 element = map(lambda x: nums[x], j),下标组合转换为元素 元 阅读全文
posted @ 2016-11-21 10:44 Salmd 阅读(94) 评论(0) 推荐(0)
摘要:problem t字符串包含元素为: 字符串s加一个字符(随机生成) 注意可能会有重合元素比如 t = 'aa ; s = 'a' solution 错误解 转换为集合利用集合的函数difference, 集合会去重,不能处理包含重复元素的情况 重做 discuss 用collectons.Coun 阅读全文
posted @ 2016-11-21 10:43 Salmd 阅读(130) 评论(0) 推荐(0)
摘要:problem 有n个版本,损坏的版本后面也会损坏,求第一个损坏的白本 solution 问题抽象为在[1,1,1,1,0,0,0]的序列里寻找第一个0 使用简单二分查找(Time Limit Exceeded) The isBadVersion API is already defined for 阅读全文
posted @ 2016-11-21 10:42 Salmd 阅读(124) 评论(0) 推荐(0)
摘要:problem 求根到叶的最短路径长度 solution 应该用BFS discuss DFS的递归解法 阅读全文
posted @ 2016-11-21 10:42 Salmd 阅读(108) 评论(0) 推荐(0)
摘要:problem 将一个list本身按需求排序 solution ~~准备用三种简单排序实现~~ 题目要求除0外,保持原序列,没必要用平方复杂度 1. 冒泡排序 2. 3. discuss 思路是记录排在最前面的0,当发现不为0的元素时,和最前面的0交换位置 元素i遍历;nums[last0]当num 阅读全文
posted @ 2016-11-21 10:41 Salmd 阅读(111) 评论(0) 推荐(0)
摘要:problem 猜数字游戏 solution 先判断元素相同,相同在两个列表内移除元素 后判断元素存在,存在在被判断列表内移除元素 缺陷在于删除list元素,时间复杂度 discuss 增加了一个list,储存0 9,如果不等且secret中存在,对应数字+1; 阅读全文
posted @ 2016-11-21 10:41 Salmd 阅读(129) 评论(0) 推荐(0)
摘要:problem 用报纸拼字符串的问题,后面的参数为报纸,前面的为待拼字符串 solution 使用collections.Counter discuss里有一个更精简的写法.同样的问题是效率不高(后20%) 反过来减,如果不能完全包含则不为空,反之为空 利用not 把返回值空/非空,转换为True/ 阅读全文
posted @ 2016-11-21 10:40 Salmd 阅读(117) 评论(0) 推荐(0)
摘要:problem 从矩阵中查找 每一行的首元素,都大于上一行尾元素( ~~(好像和哪种算法挺像的)~~ 分块索引) 分块索引 块中可能无序,本体有序 solution class Solution(object): def searchMatrix(self, matrix, target): """ 阅读全文
posted @ 2016-11-21 10:39 Salmd 阅读(90) 评论(0) 推荐(0)
摘要:problem solution 解法取巧,直接转二进制,转string,转counter 下面的解法比较合理 阅读全文
posted @ 2016-11-21 10:39 Salmd 阅读(80) 评论(0) 推荐(0)
摘要:solution 可能在多个分块中 solution 分块索引直接引申出的思维方式 时间复杂度 O(m n) O(m+n) 利用了题目一个隐藏的特性,每一个点都比它上面左边的点大 阅读全文
posted @ 2016-11-21 10:38 Salmd 阅读(89) 评论(0) 推荐(0)
摘要:problem 二维动态规划问题 solution 建立一个等大小的数组,记录到每个格子的最小值 里面包含一些冗余计算,效率不高 第二个效率高很多,检查原因 不是xrange 改写移除部分if,无提升 差异只有nums是采用1维还是2维 这句话是当前位置上面和左边元素比较,然后加当前元素 阅读全文
posted @ 2016-11-21 10:37 Salmd 阅读(123) 评论(0) 推荐(0)
摘要:problem 判断一个str是不是回文(无效字符忽略) 难度不高,注意的是空字符 and 数字也算有效字符 效率对比:30000的回文字符判断1000次 最初的解法:11.31s discuss1解法:8.18s discuss2解法:5.25s 1. wille循环改为strlist == st 阅读全文
posted @ 2016-11-21 10:36 Salmd 阅读(110) 评论(0) 推荐(0)
摘要:problem 在字符串中寻找第一个不重复的字母,返回位置(没有则返回 1) solution 1. 求一个重复字母的集合。 2. 寻找第一个不在集合的元素 discuss solution 建一个包含26个字母数值的list;第一遍循环,每发现一次某字母,对其做一个标示;第二次循环,发现字母标示为 阅读全文
posted @ 2016-10-15 15:43 Salmd 阅读(115) 评论(0) 推荐(0)
摘要:problem solution 利用set特性 阅读全文
posted @ 2016-10-15 15:41 Salmd 阅读(81) 评论(0) 推荐(0)
摘要:problem 求一个数是不是4的幂 进阶要求不用循环递归 转换为二进制,转为字符串,正则判断 solution 注意0和负数 如果把 4的幂也加进来,暂时没想到正则怎么写,分开写的 discuss 1 联合起来都是先判断是否2的幂,然后判断是否4的幂 对于数学特性应用的更深 num & (num 阅读全文
posted @ 2016-10-15 15:38 Salmd 阅读(90) 评论(0) 推荐(0)