python
shower_v
慢慢进步的小菜鸟
展开
-
tf.InteractiveSession和tf.Session的区别
记录一下,方便自己学习回顾tensorflow。区别本质:tf.InteractiveSession会将该回话注册为默认。具体体现:1.看看tf.Session()v1 = tf.constant(1)v2 = tf.constant(2)v3 = tf.add(v1, v2)sess = tf.Session()print(v3.eval())sess.close()这...原创 2019-09-10 11:27:44 · 216 阅读 · 0 评论 -
leetcode__有序矩阵中第K小的元素__python
解题思路1:直接将所有的元素合成一个列表,排序后取出第k小的元素即可。具体代码如下:class Solution: def kthSmallest(self, matrix: List[List[int]], k: int) -> int: my_list = [] for tmp in matrix: my_list +...原创 2019-07-17 12:25:18 · 324 阅读 · 0 评论 -
leetcoe__相交链表__python
解题思路:先得到两个链表的长度,假设长的为长度为a,# Definition for singly-linked list.# class ListNode(object):# def __init__(self, x):# self.val = x# self.next = Noneclass Solution(object): d...原创 2019-07-19 16:08:35 · 76 阅读 · 0 评论 -
leetcode__排序链表__python
解题思路:利用归并排序的思想,不过这里排序的不是列表,是一个链表。具体代码如下:# Definition for singly-linked list.# class ListNode(object):# def __init__(self, x):# self.val = x# self.next = Noneclass Solution...原创 2019-07-19 15:57:00 · 90 阅读 · 0 评论 -
leetcode__环形链表__python
解题思路:快慢指针的方法,当fast_ptr为None的时候,返回false,当fast_ptr等于slow_ptr的时候,返回True。具体代码如下:# Definition for singly-linked list.# class ListNode(object):# def __init__(self, x):# self.val = x# ...原创 2019-07-19 12:06:09 · 69 阅读 · 0 评论 -
leetcode__复制带随机指针的链表__python
解题思路:这道题可以用O(n)的解法来做,具体步骤如下:1.将每一个节点都复制一遍,并且将复制的节点紧跟着对应的节点之后,也就是说本来是123,就变成了112233。2.由于复制的时候,我们的复制节点的random节点都指向的是原始节点,我们也应该指向对应的复制节点,就将每个复制节点的现有random节点往后移动一次,就能完成校准。3.将原始链表和复制链表分离,112233变成123和12...原创 2019-07-19 11:50:10 · 91 阅读 · 0 评论 -
leetcode__逆波兰表达式求值__python
解题思路:利用栈的思想,遇到数字就push进去,遇到运算符号,将栈顶的两个元素拿来运算得到对应的值,pop掉两个运算的值,push进得到的值。注意:leetcode内置的int函数和我们平时的int函数有区别,所以在进行除法求值的时候我们需要修改一下,然后才能得到正确的值,细节可以看代码。具体代码如下:class Solution(object): def evalRPN(sel...原创 2019-07-18 19:36:41 · 152 阅读 · 0 评论 -
leetcode__扁平化嵌套列表迭代器__python
解题思路:这里需要注意,初始化的时候输入的nestedList里面的元素是上面的注释的定义的类别的实例。注意调用其中的方法,其余的就比较简单了。具体代码如下:# """# This is the interface that allows for creating nested lists.# You should not implement it, or speculate about...原创 2019-07-18 18:50:31 · 180 阅读 · 0 评论 -
leetcode__基本计算器II__python
解题思路:按照两个栈的思路去导入数字和数学操作,然后根据先乘除后加减的法则,找到第一个操作数和第二操作数即可。具体代码如下:class Solution: def calculate(self, s: str) -> int: string = '' for char in s: if char != ' ': ...原创 2019-07-18 18:03:37 · 439 阅读 · 0 评论 -
leetcode__合并两个有序数组__python
解题思路:这个题目有一个比较好的地方就是,nums1的长度正好等于n + m,所以可以利用这一点;1.先把nums1的前m的数字移到最后面去,腾位置;2.然后将移到后面的数和nums2一一比较,将较小的放到nums1的前面去,经过O(n + m)次判断,就可以将nums1和nums2有序的放入nums1中了。具体代码如下:class Solution: def merge(sel...原创 2019-07-07 15:38:00 · 233 阅读 · 0 评论 -
leetcode__搜索二维矩阵II__python
解题思路:利用好原始排序好的信息,从左上角的元素开始做判断,如果大于target,则说明该数字太大,需要变小点,所以向左移动一位;如果小于target,则说明该数字太小了,需要变大,则根据排序信息,就向下移动一位,一直到超出边界情况如果还未找到该数字,则说明该数字不在matrix中。可以看出,这种思路的时间复杂度为O(n*m)。具体代码如下:class Solution: def s...原创 2019-07-07 15:14:18 · 165 阅读 · 0 评论 -
leetcode__求众数__python
解题思路:这道题目,我们可以维护一个key和一个count,key用来表示一个临时的字符,如果接下来的数字是这个数字,那么我们count+1,如果不是count-1,如果count=0的时候,接下里的数字还与key不相同,那么key为这个新的num,以这样的逻辑,一次遍历即可找到众数。具体代码如下:class Solution: def majorityElement(self, n...原创 2019-07-07 14:55:59 · 95 阅读 · 0 评论 -
leetcode__只出现过一次的数字__python
解题思路:利用异或位运算(^),遍历一次即可找到对应的只出现一次的那个数字,其余的出现两次的数字在异或运算中都直接变成了0;具体代码如下:class Solution: def singleNumber(self, nums: List[int]) -> int: res = 0 for num in nums: res ...原创 2019-07-07 14:52:33 · 109 阅读 · 0 评论 -
leetcode__实现Trie__python
解题思路:利用链表的思路去解决问题,不过不同于正常的链表节点的指针部分,这里可能有0到26个节点。具体实现的代码如下:class Node: def __init__(self): self.next = {} self.tag = False class Trie: def __init__(self): ""...原创 2019-07-11 20:24:09 · 54 阅读 · 0 评论 -
leetcode__单词拆分II__python
解题思路:这道题一眼看去,就死类似于单词拆分I的深度优先搜索就可以解决的题目,不过这里升级了,就是要把每一种切分结果都要返回。具体代码如下:class Solution: def wordBreak(self, s: str, wordDict: List[str]) -> List[str]: mem = {} tmp = self.dfs(s...原创 2019-07-11 11:12:26 · 163 阅读 · 0 评论 -
leetcode__反转链表__python
解题思路:比较简单,具体可以看代码,借助一些中间变量,做一个遍历就可以达到效果。具体代码如下:# Definition for singly-linked list.# class ListNode(object):# def __init__(self, x):# self.val = x# self.next = Noneclass S...原创 2019-07-19 16:19:47 · 246 阅读 · 0 评论 -
leetcode__回文链表__python
解题思路:简单的可以直接把所有数字提出来观察是不是回文即可,我们这里只讲一下进阶解法,可以将该链表切开切成两半,根据是奇数长度还是偶数长度自己微调一下即可,然后将其中的一段翻转,然后与另一端比较,如果依次val都相同,说明是回文,否则不是回文,这样做的时间复杂度是O(n),空间复杂度为O(1)。具体代码如下:# Definition for singly-linked list.# cla...原创 2019-07-19 16:51:03 · 118 阅读 · 0 评论 -
leetcode__删除链表中的节点__python
解题思路:用下一个节点来替代本该节点即可,只需要做两次赋值即可。具体见如下代码:# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: de...原创 2019-07-19 17:01:55 · 88 阅读 · 0 评论 -
牛客网__剑指offer__机器人的运动范围__python
解题思路:利用bfs的思想,不断的向外扩展邻接节点,如果某一步扩展不到新的邻接节点,则停止循环,最后得到所有节点的数量即可。具体代码如下:# -*- coding:utf-8 -*-class Solution: def movingCount(self, threshold, rows, cols): # write code here #bfs思...原创 2019-08-05 20:57:31 · 142 阅读 · 0 评论 -
牛客网__剑指offer__矩阵中的路径__python
解题思路:利用递归的思想可以解决问题,总体来说,就是超左右前后四个方向的深度优先搜索的问题。具体代码如下:# -*- coding:utf-8 -*-class Solution: def hasPath(self, matrix, rows, cols, path): # write code here #1.左右前后方向中存在下一个字符,则可以考...原创 2019-08-05 10:55:30 · 158 阅读 · 0 评论 -
牛客网__剑指offer__滑动窗口的最大值__python
解题思路比较简单,具体的就放到代码中了。# -*- coding:utf-8 -*-class Solution: def maxInWindows(self, num, size): #1.直接暴力求解 #2.利用大顶堆来解决问题 #1 res = [] if size == 0: ...原创 2019-08-04 12:35:39 · 107 阅读 · 0 评论 -
牛客网__剑指offer__二叉搜索树的第k个节点__python
利用深度优先搜索,利用二叉搜索树的性质,我们用中序遍历的结果就是排序好的一个节点的列表,取出第K个即可。具体代码如下:# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.righ...原创 2019-07-31 14:16:01 · 139 阅读 · 0 评论 -
牛客网__剑指offer__序列化二叉树__python
具体思路用到了广度有限搜索的思想,然后对None节点特殊处理一下即可,具体的代码如下:# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass So...原创 2019-07-31 13:53:09 · 178 阅读 · 0 评论 -
leetcode__二叉树的序列化与反序列化__python
解题思路:1.层层遍历的思路来序列化与反序列化即可,但是需要考虑空节点,以保证序列化与反序列化最终对应的都是同一个树。2.结合先序遍历和中序遍历的结果构成一个字符串同样也可以达到我们需要的效果。具体代码如下:# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):...原创 2019-07-21 16:55:36 · 426 阅读 · 0 评论 -
leetcode__二叉树的最近公共祖先__python
解题思路:按照递归的思想即可解决本题。1.当root为p,q或者为null的时候返回本身;2.递归查找其左右子树;3.根据左右子树的结果,找到规则即可。具体代码如下:# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# ...原创 2019-07-20 17:27:00 · 203 阅读 · 1 评论 -
leetcode__二叉搜索树中第K小的元素__python
解题思路:深度优先搜索,采用中序遍历的方式,然后找到第k个元素即可。具体代码如下:# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right =...原创 2019-07-20 15:06:17 · 169 阅读 · 0 评论 -
leetcode__常数时间插入、删除和获取随机元素__python
解题思路:按dict来保存即可在常数时间存取,然后随机返回dict的键值即可。具体代码如下:import randomclass RandomizedSet: def __init__(self): """ Initialize your data structure here. """ self.data = {...原创 2019-07-20 13:59:08 · 164 阅读 · 0 评论 -
leetcode__四数相加II__python
解题思路:将四个变成两两相加的和的两个集合,第一个集合是A和B的元素两两相加的结果,第二个集合是C和D的元素两两相加的所有结果,然后判断是否相加等于零,统计个数即可。用列表来解题class Solution: def fourSumCount(self, A: List[int], B: List[int], C: List[int], D: List[int]) -> int...原创 2019-07-20 13:43:13 · 190 阅读 · 0 评论 -
leetcode__Excel列表序号__python
解题思路:这里的思路其实非常简单,就是一种K进制的思路,不过这里是26个字母,所以是26进制。具体代码如下:class Solution: def titleToNumber(self, s: str) -> int: res = 0 for char in s: res = res * 26 + ord(char) - ...原创 2019-07-20 12:58:58 · 77 阅读 · 0 评论 -
leetcode__滑动窗口最大值__python
解题思路:如果只是想做大这件事件非常简单,在每一段都取max即可,但是显然这样当k=n/2的时候不符合线性时间复杂度的要求,所以我们维护一个列表,放其中的k个数字,然后没加入一个新的数字的时候都对其做一定的判断,将不满足条件的元素变为false,然后pop掉最前面的元素以及前面的所有false,然后非常容易可以找到最大值。具体代码如下:class Solution: def max...原创 2019-07-17 19:17:46 · 249 阅读 · 0 评论 -
leetcode__奇偶链表__python
解题思路:将奇数位置构成一个新链表,偶数位置的节点也构成一个新链表,然后拼接起来即可。具体代码如下:# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Soluti...原创 2019-07-19 17:24:24 · 146 阅读 · 0 评论 -
leetcode__前k个高频元素__python
解题思路:先对每个数字统计词频,然后根据词频来找到最大几个数字即可,在这里,k如果是不固定的,我们可以用极小堆来解决这个问题来得到最大的k个频数。具体代码如下:class Solution: def topKFrequent(self, nums: List[int], k: int) -> List[int]: my_dict = {} for...原创 2019-07-17 15:20:06 · 351 阅读 · 2 评论 -
leetcode__5.最长回文子串__python
题目解读:这是一道寻找最长回文子串的题,怎么去寻找最长回文子串是一个问题,直接暴力求解,遍历所有可能的首字母的位置以及尾字母的位置,但是时间复杂度为O(n^2)。因此我们就需要用一个时间复杂度上要好的算法,也就是manacher算法,俗称“马拉车算法”。马拉车算法到底是怎么回事呢?其实要理解马拉车算法不难,主要就是有效的利用到了对称的信息来解决问题,只需要做一次遍历就可以解决问题,时间复杂...原创 2019-07-01 11:10:38 · 115 阅读 · 2 评论 -
leetcode__1.两数之和__python
解题思路:这个题目是一道简单题,应该是比较简单的,想到的解决办法有两种,具体已经写在代码中了,代码采取的是第二种解决办法。class Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: #1.如果是排序好的数组,则直接利用双指针法即可 #2.对于未排序好的策略...原创 2019-06-30 17:50:42 · 63 阅读 · 0 评论 -
leetcode__单词搜索II__python
方法1:将所有单词构建一个前缀树,然后用深度优先搜索来找到board中含有哪些单词。具体代码如下:class node: def __init__(self): self.val = False self.next = {}class Trie: def __init__(self): self.root = node()...原创 2019-07-13 14:55:11 · 374 阅读 · 2 评论 -
leetcode__12.整数转罗马数字__python
这道题不知道为什么会被判定为中等题,因为罗马数字的数目是有限的,然后前前后后一共就那么多种情况,直接遍历然后除法取整,即可得出该罗马数字的数目,具体代码如下:class Solution: def intToRoman(self, num: int) -> str: table = {1:'I', 4:'IV', 5:'V', 9:'IX', 10:'X', 40:...原创 2019-06-28 11:25:13 · 162 阅读 · 0 评论 -
leetcode__分割回文串__python
解题思路:这道题是一道图搜索的题目,用到的深度优先搜索方法(dfs)。首先考虑边界情况:如果字符串长度为0则应该返回包含一个空列表的列表,即[ [ ] ]。如果不为空的情况下,从s上遍历检测,如果从开始位置到某位置i的子串是回文串,那我们,将该字符串子串后面的继续用深度优先搜索(dfs2),然后用该子串作为所有dfs2结果中的列表的首元素即可。也就是说 dfs(s) = s[:i] ...原创 2019-07-09 11:27:17 · 232 阅读 · 0 评论 -
leetcode__11.盛最多水的容器__python
题目:给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。示例:输入: [1,8,6,2,5,4,8,3,7]输出: 49解题思路:这一道题的思...原创 2019-06-28 10:28:06 · 103 阅读 · 0 评论 -
leetcode__10.正则表达式匹配__python
解题思路:其实这一道题利用递归的思想就可以做出来,然后需要对正则表达式熟悉一点就可以了,然后做好边界条件的判断即可。1.当正则表达式和需要匹配的字符串都为空或者有一者为空的情况需要自己思考具体情况做出边界判断;2.然后接下来就是利用递归的思想,写递归式。具体代码如下:class Solution: def isMatch(self, s: str, p: str) -> b...原创 2019-06-27 16:27:50 · 73 阅读 · 0 评论 -
leetcode__9.回文数__python
解题思路:这道题目用python解题十分方便,可以直接将之转化为字符串然后再将字符串反转即可。如果用cpp的话,活用取余操作,判断好边界条件即可解决这道题。class Solution: def isPalindrome(self, x: int) -> bool: tmp = str(x) if tmp[::-1] == tmp: ...原创 2019-06-27 09:56:30 · 95 阅读 · 0 评论