- 博客(35)
- 资源 (7)
- 收藏
- 关注
原创 每日一题--买股票的最佳时机
关于这道题目的解法我觉得一张图就可以很好解释:途中C < A +B,所以我们只要找到这样连续的波峰波谷,并把它们的差值加入结果就行了。class Solution: def maxProfit(self, prices: List[int]) -> int: if len(prices) == 0 or len(prices) == 1: re...
2020-02-19 00:11:52 207
原创 每日一题--加油站
关键思路:我们很容易想到依次遍历每个加油站来看看其是否符合条件,但这需要的算法复杂度,这无法接受,所以需要进一步改进。改进:每次从油量不够的油站重新作为初始点出发,算法复杂度O(n)。这是一种典型的贪心思维:即从无法再坚持处重新坚持class Solution: def canCompleteCircuit(self, gas: List[int], cost: List...
2020-02-18 21:18:40 451
原创 每日一题--跳跃游戏
思路:每次更新最远能够跳到的距离举个例子:【2,3,1,1,4,1】第一轮:站在第一位,最远能跳到第三位第二轮:从第二位到第三位遍历找到能条最远的位置,结果是第二位能跳最远,到第五位第三轮:从第三位到第五位遍历能跳最远的位置.........代码:class Solution: def canJump(self, nums: List[int]) ->...
2020-02-18 17:30:45 317
原创 每日一题--二叉树展开为链表
思路很简单:先把root的左子树转化为链表移到右子树,再将右子树转化为链表移到左子树后面,整个过程是递归进行的。代码:# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None...
2020-02-17 15:33:10 150
原创 每日一题--验证二叉搜索树
此题理解起来很简单,关键操作在于:当前节点满足二叉搜索树根节点的条件是节点值大于左子树中最右的节点值(在左子树满足二叉搜索树的前提下);同时节点值还要小于右子树的最左节点值(在右子树满足二叉搜索树的前提下)。代码:# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# ...
2020-02-17 01:40:46 155
原创 每日一题--完全平方数
解法一:动态规划解法动态方程为:代码为:class Solution: def numSquares(self, n: int) -> int: dp = [i for i in range(n+1)] for i in range(2,n+1): for j in range(1, int(i**(0.5)...
2020-02-15 20:59:08 274
原创 每日一题--分数到小数
这道题目的关键是当余数出现重复时意味着商也开始重复了,抓住这一点我们就可以写出代码了,要注意的是一些边界情况的判断:class Solution: def fractionToDecimal(self, numerator: int, denominator: int) -> str: if numerator == 0: retur...
2020-02-15 15:50:27 280
原创 每日一题--最大子序和
这道题虽然是简单题,但我觉得很有趣,O(n)的思路其实很简单:从第一个元素开始,如果当前元素超过从头到当前所有元素之和,那么就把当前元素作为第一个元素继续遍历:class Solution: def maxSubArray(self, nums: 'List[int]') -> 'int': n = len(nums) curr_sum = ...
2020-02-14 22:20:43 297
原创 每日一题--第k个排列
我觉得这个题操作起来蛮复杂的,核心就是n个数的后i位共有i!种排列,所以我们可以挨个确定排列:class Solution: def getPermutation(self, n: int, k: int) -> str: if n == 1: return '1' import functools @functools.lr...
2020-02-14 21:18:34 183
原创 每日一题--字符串相乘
这道题总的来说就是一个用加法器模拟乘法的问题,在这里我新建了两个函数,一个是两字符串相加,一个是重复相加,以此来构建乘法器。class Solution: def Add(self, num1, num2): num1 = list(num1[::-1]) num2 = list(num2[::-1]) more = 0 ...
2020-02-14 21:13:18 208
原创 每日一题--字符串转整数
这题的难点在于需要很多特判以及边界情况,而一个好的解决办法就是引入正则匹配:class Solution: def myAtoi(self, s: str) -> int: return max(min(int(*re.findall('^[\+\-]?\d+', s.lstrip())), 2**31 - 1), -2**31)[\+\-]代表...
2020-02-14 15:26:02 163
原创 每日一题--不同二叉搜索树||
这题和上一题不同之处就是要把树保存下来(层遍历),解法上没什么本质改变,加一些东西就行:# Definition for a binary tree node.class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = None...
2020-02-13 16:33:36 129
原创 每日一题--不同的二叉搜索树
这道题的动态方程为,即左右两边所有可能的树的组合代码如下:class Solution: def numTrees(self, n: int) -> int: import functools @functools.lru_cache(None) def fuc(i,j): ...
2020-02-13 15:59:59 151
原创 每日一题--解码方法
这道题目的动态规划递推公式很容易想到:但是难点在于包含许多需要特判的情况,比如最后两位的大小需要尤其注意class Solution: def numDecodings(self, s: str) -> int: import functools @functools.lru_cache(None) def fuc(su...
2020-02-13 15:32:52 139
原创 每日一题--不同路径2
解题思路和上一道题一样,不过要加入一些条件判断来过滤掉有障碍物的情况:import numpy as npclass Solution: def uniquePathsWithObstacles(self, obstacleGrid: List[List[int]]) -> int: obstacleGrid = np.array(obstacleGrid...
2020-02-12 18:45:57 179
原创 每日一题--不同路径
这是一道典型的动态规划问题,所以解法上就是如何去运用动态方程去解动态方程:解法一:直接递归函数:class Solution: def uniquePaths(self, m: int, n: int) -> int: import functools @functools.lru_cache(None) def f...
2020-02-12 17:58:54 145
原创 每日一题--旋转图像
先将矩阵转置,然后再翻转每一行class Solution: def rotate(self, matrix: List[List[int]]) -> None: """ Do not return anything, modify matrix in-place instead. """ n = len(ma...
2020-02-11 17:35:38 247
原创 每日一题-组合总和
采用回溯算法:代码:class Solution: def fuc(self, candidates: List[int], target: int) -> List[List[int]]: if target < candidates[0]: return [] res = [] for...
2020-02-11 17:13:50 150
原创 每日一题--在排序数组中查找元素第一个和最后一个位置
我通过的方法依旧是使用哈希查找,但其实出题者是希望我们使用二分查找来实现的:具体题解见:https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-array/solution/zai-pai-xu-shu-zu-zhong-cha-zhao-yuan-su-de-di-yi-/代...
2020-02-10 17:06:41 240
原创 每日一题--搜索旋转排序数组
对于查找问题在没有限制空间复杂度的情况下想到建立哈希查找是很常规的做法:class Solution: def search(self, nums: List[int], target: int) -> int: dic = dict(zip(nums,list(range(len(nums))))) res = dic.get(targe...
2020-02-10 15:56:53 126
原创 每日一题--最接近的三数之和
这个题和之前的三数之和的题目一样的思路,先排序然后再双指针遍历;class Solution: def threeSumClosest(self, nums: List[int], target: int) -> int: nums.sort() n = len(nums) if n == 3: return sum(nums...
2020-02-10 15:31:02 132
原创 每日一题--下一个排列
实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1这题关键要找好两个位置,第一个是从后往前数第一...
2020-02-10 02:16:25 141
原创 每日一题--盛水最多的容器
这道题的暴力方法就是遍历所有两个木棍的组合,然后记录最大值。而想要提升解题速度,可以采用双指针的方法,分别在两端向中心靠拢,根据木桶原则,每次由最短边向长边前进,记录最大盛水量:class Solution: def maxArea(self, height: List[int]) -> int: l = 0 r = len(height...
2020-02-08 16:39:06 231
原创 每日一题--三数之和
class Solution: def threeSum(self, nums: List[int]) -> List[List[int]]: res = [] nums.sort() n = len(nums) for i in range(n): if nums[i] > 0:...
2020-02-08 16:33:26 128
原创 每日一题--数组大小减半
思路很简单,先统计每个元素的出现次数,然后排序,然后删除足够数目的:class Solution: def minSetSize(self, arr: List[int]) -> int: freq = collections.Counter() for elm in arr: freq[elm] +=1 ...
2020-02-07 17:14:39 227
原创 每日一题--获取好友已观看视频
这道题目主要考察的是图论的知识(无向图),寻找最短距离为k的好友可以进行广度优先遍历(BFS),遍历k次时队列中保留的就是需要k步才能到达的好友,然后再取出相应视频,再排序:class Solution: def watchedVideosByFriends(self, watchedVideos: List[List[str]], friends: List[List[int]...
2020-02-06 22:04:28 194
原创 每日一题--子串的最大出现次数
这道题乍一看限制很多,但是可以排除很多不必要的判断:假设我们记子串s'出现最大次数为,而对任意一个包含s'的子串s''都有,所以在枚举的时候我们只需要枚举minSize长度的子串:class Solution: def maxFreq(self, s: str, maxLetters: int, minSize: int, maxSize: int) -> int:...
2020-02-06 16:29:28 326
原创 每日一题--最长公共前缀
题目很简单,解法也很简单,找到一个然后跟其他挨个比对:class Solution: def longestCommonPrefix(self, strs: List[str]) -> str: if len(strs) == 0: return '' s = strs[0] n = len(st...
2020-02-05 01:14:44 180
原创 每日一题--单词拆分
这道题乍看之下很简单,依旧是回溯法,但是实际运行时回溯法的复杂度为,所以我们要进行一些改变。我们观察到在运行时我们要反复检查一些子串是否可拆分,这些查询中有一大部分是重复的,所以我们可以建立一个查询缓存,让查过的子串不必重复查询:class Solution: def wordBreak(self, s: str, wordDict: List[str]) -> boo...
2020-02-04 17:30:49 218
原创 每日一题--分割回文字符串
题目大意是输出所有回文字符串的分割结果,其实就是个组合问题,对于这个问题的解题思路和之前的电话号码的很像,每次我们找到一个回文字符串,都在最终结果中加上当前回文字符串与剩下字符串能够产生的组合的交叉组合。代码如下:class Solution: def IsP(self, s: str): r_s = s[::-1] if r_s == s:...
2020-02-03 01:30:59 248
原创 每日一题--电话号码的字母组合
题目很简单,要求是对所有数字键下的字符进行组合,然后给出所有的组合情况。直接去挨个遍历难免费时,一个好的办法就是递归假设我们知道数字为'234',那么其实所有组合就是数字2下的所有字符和’34‘字符串能够排列的所有组合交叉组合。代码如下:class Solution: def fuc(self, digits: str, dic) -> List[str]: ...
2020-02-02 02:08:17 1609
原创 每日一题--最长回文子串
普通暴力法暴力法的原理很简单,就是挨个判断子串是否为回文子串,但直接暴力法是无法通过的,所以可以在其基础上去除掉不必要的判断,代码如下:class Solution: def IsPalindrome(self, s: str): reverse = s[::-1] if s==reverse: return True...
2020-01-31 16:51:16 135
原创 每日一题--最长不重复字符串
算法的关键之处在于要不断比对后面的字符与前面字符串之间有没有重复,所以提高效率也在这里。暴搜的方法不赘述,复杂度滑动窗口提速的方法在于如何简化比对这一过程,自然的,使用hashset建立一个查集就可以了,每次只要查询当前字符是否在前面串中(由hashset建立),这样在使得空间复杂度为的情况下,算法复杂度就降为了.python代码如下:class Solution: ...
2020-01-30 20:36:23 189
原创 mysql-5.7.10安装及错误解决
今天安装mysql时总是无法启动服务,报错为:MySQL 服务无法启动。服务没有报告任何错误。后来几经周折才发现,安装的mysql5.7.10在bin目录下没有data这个文件夹,里面内容根据官方安装手册说要自己初始化的具体步骤:1、配置完环境变量之后修改安装目录下的my-default.ini文件:2、命令行先找到安装的mysql的bin目录,然后在命令行输入如下
2016-02-03 23:22:18 436
原创 简单的java聊天程序
学习了Socket编程,做了一个简单的聊天程序练习,代码如下 ://服务器端import java.awt.BorderLayout;import java.awt.Button;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import
2015-11-25 16:50:27 1518
《Tensorflow:实战Google深度学习框架》高清PDF版
2018-01-08
2016年计算机统考408真题及答案
2017-09-23
2017计算机统考408真题及答案 高清.pdf版
2017-09-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人