![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode 刷题日记
saomanchum
这个作者很懒,什么都没留下…
展开
-
24. Swap Nodes in Pairs
DescriptionGiven a linked list, swap every two adjacent nodes and return its head.You may not modify the values in the list’s nodes, only nodes itself may be changed.Example:Given 1->2->3-&g...原创 2020-01-21 22:21:15 · 58 阅读 · 0 评论 -
leetcode day20 Maximum Average Subarray
题目描述:给定K,求出array里面k大小的子数组最大平均值题目思路:两种方法:1、给另一个数组diff_array, 计算每个元素i与i-k的差,然后计算这个数组的最大连续数组值,再与原数组的前k项之和加起来则为最大的和。class Solution: def findMaxAverage(self, nums: List[int], k: int) -> float: ...原创 2019-03-30 14:32:36 · 72 阅读 · 0 评论 -
leetcode day20 Image Smoother
题目描述 :给定一个数组(也就是类似于图片 m*n),要求求出以它为中心的九宫格的平均值。并返回这个新数组题目思路:没什么思路,就按照本来的写就好了,要考虑边界条件class Solution: def imageSmoother(self, M: List[List[int]]) -> List[List[int]]: neighbour = [[-1, -1]...原创 2019-03-30 15:29:19 · 83 阅读 · 0 评论 -
leetcode Min Cost Climbing Stairs
题目描述:给钱就可以跳一级或者两级的楼梯,求给最少的钱到达顶层题目思路:对于每一个点fn,最小的花费是min(f(n-1), f(n-2)), 递归,不过这里用迭代减少空间复杂度。代码:class Solution: def minCostClimbingStairs(self, cost: List[int]) -> int: f1=0 f2=...原创 2019-04-06 22:00:50 · 87 阅读 · 0 评论 -
leetcode largest number at least twice of others
题目描述:在一个数组中找到最大的一个数字,并且这个数字是其他数字的至少两倍题目思路:1、对每一个数字都是两倍,意思就是对于第二大的数是两倍以上即可,这样就转换成了找最大两个数字的问题2、设立两个数字:max_num and sec_max,if max_num<x: exchange(x, max_num)exchange(max_num, sec_max)elif sec_ma...原创 2019-04-07 22:40:39 · 64 阅读 · 0 评论 -
leetcode day22 longest continuous increasing subarray & 1bit and 2bits
1、longest continuous increasing subarray题目描述:求出一个数组中,单调递增的最长的数组题目思路:sliding window, 我的方法是,设定一个变量,当nums[i+1] <nums[i]的时候,count_cur=0,其他时候加一,然后归零的时候与count_max相比,最后返回count_maxclass Solution: de...原创 2019-04-02 20:56:44 · 89 阅读 · 0 评论 -
leetcode Positions of Large Groups
题目描述:一个字符串,找出连续三个以上相同的字符,并返回起始的index题目思路:两个point分别指向头尾,i_end 一直在增加,当发现当前的数字目前cur_char不相等的时候,进行判断两者之差与3的大小,还有一种情况就是当i_end已经是最后一个数字的时候,也要进行判断。class Solution: def largeGroupPositions(self, S: str) ...原创 2019-04-09 21:25:25 · 78 阅读 · 0 评论 -
leetcode flipping an image
题目描述:(好无聊的一道题)就是每行数组都翻转而且取反题目思路:直接做啊还能怎么的class Solution: def flipAndInvertImage(self, A: List[List[int]]) -> List[List[int]]: A_new = [] for row in A: new_row = [(...原创 2019-04-09 21:38:01 · 62 阅读 · 0 评论 -
leetcode:MagicSquares
终于又开始刷题了1、题目描述:给定一个矩阵,求矩阵中有多少个magic squares2、题目思路:我是一点思路都么得的,所以是看了给的参考答案想到的:有几点可以想一想:(1) 这九宫格里面的每一个数字都不同,就是0-9,所以他们的和就是45(2)以中间那个数为中点,横竖以及对角线的四个和的和,是60(3)算一算,就知道中间的那个数是5(4)所以,我们可以先找到中间的数是不是5,...原创 2019-04-25 21:34:39 · 65 阅读 · 0 评论 -
leetcode cpp:day1:two sum
two sum:my solution:遍历,时间复杂度大概是o(n2)可以优化:使用map原创 2019-08-28 18:20:44 · 94 阅读 · 0 评论 -
leetcode:<cpp> day1 rm element
1、remove element自己的想法:想利用类似于链表的想法,对于空间以及操作复杂度进行简化参考的想法:使用两个指针来进行,第一个用来遍历数组,第二个用来指向新数组的元素,因为第一个数组总是在新数组前,因此这种想法可以实现。代码:class Solution {public: int removeElement(vector<int>& nums, int v...原创 2019-08-31 14:23:22 · 66 阅读 · 0 评论 -
leetcode0904 : maximum subarray cpp
这次是懂得方法,但是由于cpp的尿性,所以花了一些额外的脑子。class Solution {public: int maxSubArray(vector<int>& nums) { int sum=0; int ans=INT_MIN; for(int i=0;i<nums.size();i++) ...原创 2019-09-04 23:41:34 · 54 阅读 · 0 评论 -
leetcode cpp:day2 plus one
plus one:总结的问题就是:cpp的问题,注意在cpp中,一个变量的生命只能在花括号内,过了就是过了,就是么的。原创 2019-09-05 23:19:39 · 79 阅读 · 0 评论 -
leetcode cpp:day6 kadane's algorithm
看到一个比较好的解释:意思就是:假设原本是a[i],令b[i]是它的差数列1、stock profit I那么最大的差,就来自于b[i]和最大子数列2、stock profit II最大的利润,当然是所有正数的profit都加起来啦class Solution {public: int maxProfit(vector<int>& prices) { ...原创 2019-09-07 15:49:45 · 115 阅读 · 0 评论 -
leetcode cpp:day6Two Sum II
自己的思路:1、两个指针,一个从begin开始,一个从end开始如果大于9就减小最大的指针,如果小于9就增大最小的指针class Solution {public: vector<int> twoSum(vector<int>& numbers, int target) { int i=0; int j=numbers...原创 2019-09-07 23:33:16 · 92 阅读 · 0 评论 -
leetcode day19 Maximum Product of Three Element
题目描述:给定一个数组(数组元素有正有负),求出其中三个乘积最大的元素题目思路:1、有正有负2、三个负数的乘积为负3、最大的乘积只可能出现在:三个最大正数,两个最小负数和最大正数4、这样一来题目就转换成求最大三个正数和最小两个负数的事情了有两种方法:1、single scan:扫描的过程中进行比较,得到最大的三个正数和最小的两个负数2、sorting:排序之后得到最大的三个正数和最小两...原创 2019-03-30 14:26:13 · 77 阅读 · 0 评论 -
leetcode day18 Can Place Flowers
题目描述:给定一个数组,数组的元素值为01,0代表没有种花,1代表已经有花,给定要种的花的数目k,且花与花之间必须要有间隔,问给定的位置是否够种花思路:题目很简单,就是寻找符合条件的空位的数目,看是否大于k,如果大于则返回True,否则返回False。我想的太复杂了,只要把条件思考清楚就很简单:1、自身为空2、左右为空3、如果是边界点,则左为空或右为空即可。也可以换一个角度思考,意思就是,...原创 2019-03-30 14:20:07 · 95 阅读 · 0 评论 -
leetcde day17 Reshape The Matrix I
题目描述:给定一个原来的数组,再给出新的r和c,要求将原数组转换成新的rc大小的数组题目思路:一、我自己的思路:step1:如果rc不等于原本数组的大小,也就是不能互相转换,则返回原本的数组step2: 考虑两个数组如何建立对应关系(mapping)。从一个2d数组转换到1d数组的关系是:x = i*c + j那么从1d转换为2d的关系是:i = x//c(商)j = x%c(余数...原创 2019-03-26 16:42:28 · 46 阅读 · 0 评论 -
leetcode day4 ——Maximum subarray(要多看哦)
有四种解决方法:直接暴力解决Kadane 算法动态规划分治算法1、暴力解决从头开始遍历整个数组中的数,并且进行组合,共有n(n+1)/2 种连续子数组,因此此选择方法需要的时间复杂度为O(n2)2、Kadane 算法第i+1个数结尾的子列和= max(以第i个数结尾的子列和+nums[i+1],nums[i+1])使用递归 (迭代)从第一项开始计算得到每个i结尾的最大子列和...原创 2019-03-09 10:24:32 · 224 阅读 · 0 评论 -
leetcode day7
题目1:Best time to buy and sell stock概述:给一个数组,数组里面的是当日的股票价格,考虑一个算法,算出合适买入卖出得到最大的收益,并返回最大收益。思路:有三种方法咯,第一就是暴力算法(我这个小傻子能想到的而且还信誓旦旦想着这已经不能再优化了以为时间复杂度就是n平方,呵你这个傻逼。)结果?结果当然是崩掉了。第二种:(是看别人讨论知道的呵你自己怎么没有想到)是使...原创 2019-03-09 14:14:27 · 85 阅读 · 0 评论 -
leetcode day9 Majority Element
一、Python的知识字典的使用:1、创建:dict[key] = value2、根据关键字提取相关值:value = dict[key] ——这种方法如果不存在相关key的话会返回错误######## 判断key是否存在 if key in dict 这样value = dict.get(key, set_value)——如果不存在相关key,会返回设定值3、字典的key只能使...原创 2019-03-14 14:14:01 · 84 阅读 · 0 评论 -
leetcode day5 (2019.3.6)
题目1:Plus one给一个数组,数组组成的一个整数加一,并将这个整数再展开为一个数组如:input : [1, 2, 3, 4]output: [1, 2, 3, 5]思路:有两种思路,第一种是将数组转成一个整数,加一得到新的整数,再展开为数组;第二种是直接在数组的结构中进行操作第一种思路比较简单,只需要进行数字运算即可得到,时间复杂度我就不算了哼唧第二种思路也比较简单,但是要考虑...原创 2019-03-07 21:07:55 · 84 阅读 · 0 评论 -
leetcode day12 Contain Duplicate II
题目描述:给定一个数组和整数K,判断其中重复元素的距离不能大于k题目思路:创建一个哈希表(在python里面我用dict),字典关键字是数组的值,而字典中的值是数组的索引值。扫描并判断,如果不存在,则创建一个新的字典值,若存在则直接判断其数值之差是否符合标准。返回。def containsNearbyDuplicate(self, nums, k): dic = {} for ...原创 2019-03-19 17:48:19 · 75 阅读 · 0 评论 -
leetcode day8 Best Time to buy and sell the stocks
题目:Best Time to Buy and Sell the Stocks思路:(啊这道题吧 我觉得一直想不清楚的我自己是个傻逼)意思是,把一个stocks在最低价买进最高价卖出(一次性),总是会少于在期间一直买入卖出之和的,说的不太清楚但是意思是下面这个意思:这个是来自题目本身的solution 意思就是 C < A+B. (这个怎么能都想不到呢。)所以如果允许买卖多次,那么最大的...原创 2019-03-11 10:07:16 · 88 阅读 · 0 评论 -
leetcode day13 Missing Number
题目描述给定一个数组,里面是0-n的数字,找出缺了的一项,例如:思路1、利用哈希表,但是是只有key的哈希表,在python中表现的数据结构是set(集合)。set跟dict差不多,但是set只有key,没有value:set的使用方法set的性质:确定性,互异性,无序性set的使用方法:a = set() ——创建a.add()——添加a.remove()——删除a.cle...原创 2019-03-19 21:11:46 · 57 阅读 · 0 评论 -
leetcode day6
一、python相关知识:1、map的用法:map(func, list1,list2,…)map可以将function作用到每一个list上,如:def f(x): return x*xmap(f, [1,2,3])上述函数会返回[1,4,9]返回的是一个列表注意:不一定只能作用于数值,只要列表里的变量类型与函数规定的变量类型相符则可以计算,而且map返回的是一个列表2...原创 2019-03-07 22:05:03 · 56 阅读 · 0 评论 -
leetcode day8 Two Sum II
题目:这次给的数组是按照升序排列好的数组,依然是要得到两个数的坐标,使得这两个数之和为target的值思路:回忆一下第一个two sum的时候,我们使用到的是字典的方法,这种方法在python里面特别好用,因为可以按照值直接搜索得到。这一次可以继续使用字典(dict)的方法,但是我们还可以有另一种更加巧妙的方法:两个指针,一头一尾,两个数之和,如果和大了,则右指针向左移动,如果sum小了,则...原创 2019-03-11 21:42:37 · 80 阅读 · 0 评论 -
leetcode day14 Move Zeroes
题目描述:将数组中所有0都放置在数组的末端,且保持前面非零数的顺序不变思路:1、我自己想到的思路:指定两个指针,一个指向最前面的零,一个走在前面指向非零,不断交换元素则可以到达最后,这种的平均复杂度不超过O(n)代码:class Solution(object): def moveZeroes(self, nums): """ :type nums:...原创 2019-03-20 21:52:37 · 69 阅读 · 0 评论 -
leetcode day10 Rotate Array
题目:给一个数组,给定一个k,数组k steps向后移动,你知道的就是这样:思路:1、暴力倾向的我们总是不同意的你知道吧然后是参考答案给出来的:2、利用额外的数组进行辅助计算:class Solution(object): def rotate(self, nums, k): """ :type nums: List[int] :...原创 2019-03-17 16:01:06 · 66 阅读 · 0 评论 -
leetcode day11 Contains Duplicate I
题目描述:给定一个数组,检查数组中是否有重复的数组元素思路:(诶做这道题的时候思路还是很清晰的)1、排序:先排序,从前往后扫描检查前后元素是否相等,如果相等则返回TRUE,如果到最后退出循环,则无重复元素,返回FALSEclass Solution(object): def containsDuplicate(self, nums): """ :typ...原创 2019-03-17 16:56:02 · 74 阅读 · 0 评论 -
leetcode day15 Third Maximum Number
题目描述:给定一个数组,找到数组中第三大的数字思路:建立一个新的数组,分别指向第一第二第三大的数字,(利用python)一开始指定数组中每一个数为无穷小,然后依次进行比较和交换class Solution(object): def thirdMax(self, nums): """ :type nums: List[int] :rtype...原创 2019-03-21 20:40:35 · 52 阅读 · 0 评论 -
leetcode day15 Find All Numbers Disappeared
题目描述:给定一个数组n大小,本来应该数组里有1-n的数字,但是可能某些数字重复了,某些数字缺了,因此我们需要找到所有缺了的数字,并返回数组。哦对了,有要求就是不能使用其他的空间,而且保持时间复杂度为O(n)思路:卧槽在讨论中看到一个超可爱的解法,就是,我们进行两次迭代,第一次对于nums[nums[i]-1]进行取反 即 nums[nums[i]-1] = -nums[nums[i]-1],...原创 2019-03-21 21:06:19 · 90 阅读 · 0 评论 -
leetcode day16 K-diff Pairs in an array
题目描述:找到数组中恰好差k的一对数,且不重复计算思路:1、第一种思路是我第一个看懂的,还是使用dictionary这种数据结构。把每种数据存在dict中,当k=0的时候,查找dict中是否有value大于1的关键字,若有则rec+1,;如果k>1, 则遍历dict,若key+k in dict 则rec+1(不是很明白为什么k一定要大于0)class Solution(object)...原创 2019-03-25 17:58:01 · 69 阅读 · 0 评论 -
leetcode day16 array partition
题目描述:给定一个数组,每两个数为一pair,选出一对中最小的数,进行求和,求出最大的和思路:这个题的思路其实有点简单,就是从小到大排序,最近邻的两个成为一组,则最后求出来的和为最大和,于是我想到了法11、先对数组进行排序,秩为单数的求和,这种方法的效率有点低就是,emm问题出在哪里呢2、很巧妙的一种方法:class Solution(object): def arrayPair...原创 2019-03-26 15:56:54 · 86 阅读 · 0 评论 -
leetcode day1
一、two sum:1、python相关知识(1)range(start, end, step=1)在使用for循环语句的时候有两种方法:a. 迭代:for i in somethingb. 索引:for i in range()(2)python 里 average time in looking up an element in a list is o(n) while o(1) ...原创 2019-03-01 17:42:34 · 77 阅读 · 0 评论