- 博客(124)
- 收藏
- 关注
原创 python读取yaml和excel方法
python读取yaml和excel方法欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:撤销:Ctrl/Command + Z重做:Ctrl/Command + Y加粗:Ctrl/Command + B斜体
2023-02-23 18:43:26 389
原创 python删除三个以上相邻重复字符
双指针法:用一个左指针和一个右指针,遍历字符串,先固定左指针,当右指针指向的值等于左指针的值时,就继续移动右指针,然后判断右指针与左指针之间的长度是否大于等于3,如果是的话,就删除掉s中的这一段,并且左指针回退2位,如果否,就移动左指针;def elimination(s): l = 0 while l < len(s): r = l # 把右指针更新为当前位置 while r < len(s) and s[r] == s[l]:
2021-10-09 21:40:15 670
原创 leetcode143重排链表
# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val = val# self.next = nextclass Solution: def reorderList(self, head: ListNode) -> None: """ Do not return .
2021-10-09 17:08:47 119
原创 最长回文字串、最长递增子序列、最长连续子数组、最大连续子数组的和
class Solution: def longestPalindrome(self, s: str) -> str: if not s: return '' dp = [[False for i in range(len(s))]for i in range(len(s))] for i in range(len(s)): dp[i][i] = True cur_start.
2021-10-06 23:32:45 97
原创 最长无重复子串 和 公共子串长度
1、最长无重复子串class Solution: def lengthOfLongestSubstring(self, s: str) -> int: if not s: return 0 queue = [s[0]] dic = {s[0]:0} max_len = 1 tmp = 1 for i in range(1,len(s)): if s
2021-10-02 15:26:18 73
原创 面试题 04.05. 合法二叉搜索树
# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def isValidBST(self, root: TreeNode) -> bool: #中序遍历,.
2021-09-25 10:17:03 65
原创 2021-09-22面试题 04.03. 特定深度节点链表
# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = None# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# .
2021-09-24 22:41:11 118
原创 面试题 01.07. 旋转矩阵
class Solution: def rotate(self, matrix: List[List[int]]) -> None: n = len(matrix) matrix_new = [[0] * n for _ in range(n)] #这里有一个公式:原矩阵[i][j] === 变换后[j][n-i-1] for i in range(n): for j in range.
2021-09-21 15:32:13 64
原创 面试题 01.06. 字符串压缩
class Solution(object): def compressString(self, S): if S == '': return S res = [S[0]] count = 1 for i in range(1,len(S)): if S[i] != res[-1]: #这里一定要注意先加入count 再加入S[i] .
2021-09-21 15:21:00 92
原创 面试题 01.05. 一次编辑
class Solution(object): def oneEditAway(self, first, second): """ :type first: str :type second: str :rtype: bool """ if abs(len(first)-len(second)) > 1: return False for i in rang.
2021-09-21 15:02:38 69
原创 面试题 01.04. 回文排列
class Solution: def canPermutePalindrome(self, s: str) -> bool: flag = 0 num = 0 #这一步骤是将所有出现次数为2的倍数的字符过滤掉 for i in s: lens = ord(i) flag = flag ^ (1 << lens) #这里是将flag右移与1进行与运算.
2021-09-21 14:51:20 67
原创 面试题 01.02. 判定是否互为字符重排
给定两个字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。class Solution(object): def CheckPermutation(self, s1, s2): """ :type s1: str :type s2: str :rtype: bool """ alist1 = [0] * 26 alist2 = [0] *
2021-09-21 14:28:12 67
原创 面试题 01.01. 判定字符是否唯一
class Solution(object): def isUnique(self, astr): """ :type astr: str :rtype: bool """ flag = 0 for i in astr: tem = ord(i) - ord('a') if (1<<tem) & flag != 0:
2021-09-21 14:21:48 59
原创 两个栈实现一个队列和两个队列实现一个栈
两个栈实现一个队列class MyQueue: def __init__(self): self.A = [] self.B = [] def push(self, x: int) -> None: self.A.append(x) def pop(self) -> int: if self.B: return self.B.pop() else:
2021-09-21 13:12:44 69
原创 面试题 03.05. 栈排序
面试题 03.05. 栈排序栈排序。 编写程序,对栈进行排序使最小元素位于栈顶。最多只能使用一个其他的临时栈存放数据,但不得将元素复制到别的数据结构(如数组)中。该栈支持如下操作:push、pop、peek 和 isEmpty。当栈为空时,peek 返回 -1。定义一个主栈和辅助栈的方法,辅助栈中存储比val小的值。class SortedStack: def __init__(self,**args): #定义一个主stack,和一个辅助的help self
2021-09-21 12:51:10 94
原创 链表相加(包括正向和反向)
1、正向# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val = val# self.next = nextclass Solution: def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode: s1
2021-09-20 21:52:58 190
原创 面试题 02.04. 分割链表
# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def partition(self, head: ListNode, x: int) -> ListNode: #双链表法 pmin = node1 = Lis
2021-09-20 18:55:43 65
原创 260. 只出现一次的数字 III
给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。你可以按 任意顺序 返回答案。class Solution: def singleNumber(self, nums: List[int]) -> List[int]: flag = 0 #这个循环就是让nums里的元素都进行异或,最后得到两个只出现一次的数异或后的结果flag for i in nums:
2021-09-19 21:02:34 79
原创 只出现一次的数字 II
class Solution: def singleNumber(self, nums): res = 0 for i in range(32): Sum = 0 for num in nums: Sum += (num>>i)&1 if Sum % 3 : #当i为31的时候,这个数就是负数
2021-09-19 20:29:23 58
原创 只出现一次的数字I
class Solution: def singleNumber(self, nums: List[int]) -> int: #这里要知道异或运算:0^a = a a^a=0 res= 0 for i in nums: res = res ^ i return res
2021-09-19 19:04:25 55
原创 485. 最大连续 1 的个数
最大连续 1 的个数class Solution(object): def findMaxConsecutiveOnes(self, nums): """ :type nums: List[int] :rtype: int """ res = count = 0 nums.append(0) for num in nums: if num == 1: .
2021-09-06 19:21:44 57
原创 50. Pow(x, n)
Pow(x, n)class Solution(object): def myPow(self, x, n): """ :type x: float :type n: int :rtype: float """ if n == 0: return 1 if n == 1: return x if n == -1: .
2021-09-06 18:11:35 69
原创 面试题 08.04. 幂集
面试题 08.04. 幂集class Solution(object): def subsets(self, nums): """ :type nums: List[int] :rtype: List[List[int]] """ res = [[]] for num in nums: t = res[:] for lst in t:
2021-09-06 17:41:14 58
原创 机器人的运动范围
class Solution: def movingCount(self, m: int, n: int, k: int) -> int: if m <= 0 : return 0 visited = [[0 for _ in range(n)]for _ in range(m)] #计算一个格子中横纵坐标的数每个数的相加结果 def Sum(m): s = 0
2021-08-31 11:56:05 54
原创 水壶问题python
class Solution(object): def canMeasureWater(self, x, y, z): if z==0:return True if x+y<z:return False if x+y==z:return True if x==z or y==z:return True if x==y:return False minNum=min(x, y) max
2021-08-30 23:19:41 342
原创 20210830(offer64. 最小路径和)
最小路径和class Solution: def minPathSum(self, grid: List[List[int]]) -> int: #初始化一个和grid相同大小的全为0的矩阵 matrix = [[0 for i in range(len(grid[0]))]for i in range(len(grid))] if len(grid) == 0: return 0 for i in .
2021-08-30 23:17:03 41
原创 20210822 (剑指 Offer 15. 二进制中1的个数)
剑指 Offer 15. 二进制中1的个数位运算:每次将n的二进制数右移动一位,如果与1进行与运算为1,则res+1,最后res就是n的二进制数中1的个数。class Solution: def hammingWeight(self, n: int) -> int: res = 0 while n: a = n & 1 res = res + a n = n >> 1
2021-08-22 12:55:12 52
原创 2021-08-22
剑指 Offer 68 - I. 二叉搜索树的最近公共祖先# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def lowestCommonAncestor(self, root: 'TreeN
2021-08-22 12:15:36 54
原创 20210822
剑指 Offer 63. 股票的最大利润class Solution(object): def maxProfit(self, prices): """ :type prices: List[int] :rtype: int """ #这道题只能买入卖出一次,而不是多次买入卖出 if not prices: return 0 n = len(prices)
2021-08-22 10:45:04 135
原创 20210822
剑指 Offer 55 - II. 平衡二叉树# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution(object): def isBalanced(self, root):
2021-08-22 10:32:12 51
原创 20210821
剑指 Offer 65. 不用加减乘除做加法class Solution { public int add(int a, int b) { while(b != 0){ int c = (a & b) << 1; //这里c是进位:用a与b左移一位表示 a = a ^ b; //计算a与b异或的值再赋值给a b = c; //将进位c赋值给b } retur
2021-08-21 11:08:29 45
原创 20210815
剑指 Offer 49. 丑数class Solution: def nthUglyNumber(self, n: int) -> int: if n < 7: return n a = [1] p2 = p3 = p5 = 0 for i in range(2,n+1): newNum = min(a[p2]*2,a[p3]*3,a[p5]*5) a
2021-08-15 20:31:43 56
原创 20210814
剑指 Offer 52. 两个链表的第一个公共节点# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListN
2021-08-14 19:27:13 53
原创 20210814
剑指 Offer 58 - II. 左旋转字符串class Solution: def reverseLeftWords(self, s: str, n: int) -> str: if n >len(s): return None alist = [] for i in range(n): alist.append(s[i]) for j in alist:
2021-08-14 14:52:23 48
原创 20210814
剑指 Offer 58 - I. 翻转单词顺序class Solution: def reverseWords(self, s: str) -> str: s = s.strip() #去掉字符串首尾的空格 i = j = len(s)-1 res = [] while i >= 0: while i >= 0 and s[i] != " ": #搜索首个空格
2021-08-14 14:37:55 79
原创 20210814
剑指 Offer 57 - II. 和为s的连续正数序列class Solution: def findContinuousSequence(self, tsum: int) -> List[List[int]]: ''' 使用滑动窗口的方法来解决 设定一个动态的窗口,low指向窗口头部, high指向窗口尾部,窗口之间的值,为目标值 如果目标值为target,那就是其中一个解,加入到列表中。否则移动窗口。
2021-08-14 14:23:16 49
原创 2021-08-14
剑指 Offer 57 - II. 和为s的连续正数序列class Solution: def findContinuousSequence(self, target: int) -> List[List[int]]: ''' 使用滑动窗口的方法来解决 设定一个动态的窗口,low指向窗口头部, high指向窗口尾部,窗口之间的值,为目标值 如果目标值为target,那就是其中一个解,加入到列表中。否则移动窗口。
2021-08-14 13:23:03 46
原创 20210814
剑指 Offer 57. 和为s的两个数字class Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: ''' 方法1:哈希表方法 hashset = set() for n in nums: if target-n in hashset: return [t
2021-08-14 12:02:10 64
原创 20210814
剑指 Offer 56 - I. 数组中数字出现的次数class Solution: def singleNumber(self, nums: List[int]) -> List[int]: xor = 0 for i in range(len(nums)): xor ^= nums[i] mask_bit = 1 while mask_bit & xor == 0:
2021-08-14 11:34:11 43
原创 2021-0813
剑指 Offer 50. 第一个只出现一次的字符class Solution: def firstUniqChar(self, s: str) -> str: if not s: return " " dict1 = {} for i in s: if i not in dict1: dict1[i] = 1 else:
2021-08-13 18:51:28 41
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人