自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 收藏
  • 关注

原创 使用python2.7对一个有序json进行加密的一些坑

使用python2.7对一个json进行加密#encoding=utf-8import jsonimport hashlibimport collectionsOrderedDict={"dcity": "CAN", "acity": "CTU", "date": "2021-09-01", "partner": "10000", "t_time": "1629878849"}# 有序字典params = collections.OrderedDict()params['dcity'] =

2021-08-26 10:47:46 142

原创 买卖股票的最佳时机

买卖股票的最佳时机输入:[7,1,5,3,6,4]输出:5解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。class Solution: def maxProfit(self, prices: List[int]) -> int: minPrice,maxProfits=float(inf),0

2021-06-14 23:20:57 97

原创 反转链表python

class Solution: # 返回ListNode def ReverseList(self, pHead): pre,cur=None,pHead while cur: temp=pre pre,cur=cur,cur.next pre.next=temp return pre

2021-06-14 22:51:18 80

原创 两数之和,无序返回下标

给出一个整数数组,请在数组中找出两个加起来等于目标值的数,你给出的函数twoSum 需要返回这两个数字的下标(index1,index2),需要满足 index1 小于index2.。注意:下标是从1开始的假设给出的数组中只存在唯一解例如:给出的数组为 {20, 70, 110, 150},目标值为90输出 index1=1, index2=2[3,2,4],6[0,2,3,0]0#class Solution: def twoSum(self , numbers , target

2021-06-06 14:58:50 78

原创 分解质因数

分解质因数将一个正整数分解质因数。例如:输入90,打印出90=233*5。def yinshifenjie(nums): list1 = [] for i in range(2,nums//2): while True: if nums%i ==0: nums=nums/i list1.append(i) else: break

2021-05-27 00:36:03 33

原创 字符串中最后一个单词的长度

给你一个字符串 s,由若干单词组成,单词之间用空格隔开。返回字符串中最后一个单词的长度。如果不存在最后一个单词,请返回 0 。单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。示例 1:输入:s = “Hello World”输出:5示例 2:输入:s = " "输出:0输入:s="a "输出:1class Solution: def lengthOfLastWord(self, s: str) -> int: if s==" ":

2021-05-23 20:12:33 167

原创 斐波那契数

斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0,F(1) = 1F(n) = F(n - 1) + F(n - 2),其中 n > 1class Solution: def fib(self, n: int) -> int: if n<2: return n list1=[0,1] for i

2021-05-15 23:57:15 112

原创 最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”输入:strs = [“flower”,“flow”,“flight”]输出:“fl”from typing import Listclass Solution: def longestCommonPrefix(self, strs: List[str]) -> str: if not strs: return "" headStr=strs[0

2021-05-15 23:46:50 36

原创 有效括号

给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。class Solution: def isValid(self, s: str) -> bool: if len(s)%2 ==1: return False dic={")":"(","}":"{","]":"[",} stack=[

2021-05-15 22:53:15 36

原创 判断是否回文数

给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。class Solution: def isPalindrome(self, x: int) -> bool: return str(x) == str(x)[::-1]...

2021-05-15 16:30:27 46

原创 给定一个整数 n,返回 n! 结果尾数中零的数量。

给定一个整数 n,返回 n! 结果尾数中零的数量。class Solution: def trailingZeroes(self, n: int) -> int: num = 0 for i in range(1, n+1): while i % 5 == 0: num += 1 i = int(i / 5) return num...

2021-05-15 01:20:02 575

原创 筛选数组中出现次数最多的元素

给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。class Solution: def majorityElement(self, nums: List[int]) -> int: dic={} maxnum=0 for i in nums: if i not in dic:

2021-05-15 00:24:39 197

原创 10进制转换为26进制

给定一个正整数,返回它在 Excel 表中相对应的列名称。例如,1 -> A2 -> B3 -> C...26 -> Z27 -> AA28 -> AB class Solution: def convertToTitle(self, columnNumber: int) -> str: res=[] s="" while columnNumber >0: co

2021-05-15 00:01:42 248

原创 两数之和 II - 输入有序数组

示例 1:输入:numbers = [2,7,11,15], target = 9输出:[1,2]解释:2 与 7 之和等于目标数 9 。因此 index1 = 1, index2 = 2 。示例 2:输入:numbers = [2,3,4], target = 6输出:[1,3]class Solution: def twoSum(self, numbers: List[int], target: int) -> List[int]: n=len(numbers

2021-05-14 16:04:04 45

原创 扑克牌中的顺子

扑克牌中的顺子从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。方法一:class Solution: def isStraight(self, nums: List[int]) -> bool: ma,mi=0,14 res=[] for num in nums: if num ==

2021-04-10 23:08:22 162

原创 左旋转字符串

左旋转字符串字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。方法一:class Solution: def reverseLeftWords(self, s: str, n: int) -> str: lenth=len(s) res=[] for i in range(0,lenth):

2021-04-10 22:12:18 48

原创 翻转单词顺序

翻转单词顺序输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. “,则输出"student. a am I”。方法一:list存储,然后逆向输出listclass Solution: def reverseWords(self, s: str) -> str: str1 =s.strip() str2=str1.split() str2.re

2021-04-10 20:56:40 50

原创 查找list中和为s的两个数字

和为s的两个数字输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。class Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: i,j=0,len(nums)-1 while i<j: s= nums[i]+nums[j] if s<t

2021-04-10 18:23:17 63

原创 判断平衡二叉树

平衡二叉树输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。class Solution: def isBalanced(self, root: TreeNode) -> bool: def recur(root): if not root: return 0 left =recur(root.left)

2021-04-10 17:45:05 67

原创 二叉树的深度

二叉树的深度输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。方法一:深度遍历class Solution: def maxDepth(self, root: TreeNode) -> int: if not root: return 0 return max(self.maxDepth(root.right),self.maxDepth(root.lef

2021-04-06 23:30:57 57

原创 二叉搜索树的第k大节点

二叉搜索树的第k大节点5/ 3 6/ 2 4/1root = [5,3,6,2,4,null,null,1], k = 3输出:4class Solution: def kthLargest(self, root: TreeNode, k: int) -> int: def dfs(root): if not root or k==0 : return dfs(root.

2021-04-06 23:03:34 33

原创 0~n-1中缺失的数字

0~n-1中缺失的数字一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。方法一:二分法class Solution: def missingNumber(self, nums: List[int]) -> int: i,j=0,len(nums)-1 while i<j: m=(i+j)//2

2021-04-05 18:53:50 65

原创 两个链表的第一个公共节点

输入两个链表,找出它们的第一个公共节点。class Solution: def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode: a,b=headA,headB while a != b: if a: a=a.next else: a=headB

2021-04-05 18:19:36 37

原创 第一个只出现一次的字符

第一个只出现一次的字符在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。class Solution: def firstUniqChar(self, s: str) -> str: dic={} for c in s: if c not in dic: dic[c]=1 else: dic[c] +=1

2021-04-04 22:36:46 37

原创 连续子数组的最大和

连续子数组的最大和输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。class Solution: def maxSubArray(self, nums: List[int]) -> int: maxnum=nums[0] for i in range(1,len(nums)): if nums[i-1]>0: nums[i] +=n

2021-04-04 22:10:57 78

原创 最小的k个数

最小的k个数输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。from typing import List, Tupleimport collectionsfrom collections import dequeclass Solution: def getLeastNumbers(self, arr: List[int], k: int) -> List[int]: def

2021-04-04 11:19:15 61

原创 数组中出现次数超过一半的数字

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。方法一:摩尔排序法class Solution: def majorityElement(self, nums: List[int]) -> int: votes=0 for num in nums: if votes==0: x=num if num ==x: votes +=1

2021-04-03 23:03:30 40

原创 从上到下打印二叉树

从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。class Solution: def levelOrder(self, root: TreeNode) -> List[List[int]]: if not root: return [] res,queue=[],collections.deque() queue.append(root) while queue:

2021-04-03 21:45:10 42

原创 顺时针打印矩阵

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。class Solution: def spiralOrder(self, matrix: List[List[int]]) -> List[int]: if not matrix: return [] t,l,b,r,res=0,0,(len(matrix)-1),(len(matrix[0])-1),[] while True: f

2021-04-03 10:06:25 38

原创 对称二叉树

请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。class Solution: def isSymmetric(self, root: TreeNode) -> bool: def recur(l,r): if not l and not r: return True if not l or not r or l.val != r.val: retur

2021-04-02 19:54:25 39

原创 二叉树左右子树节点交换

二叉树左右子树节点交换class Solution: def mirrorTree(self, root: TreeNode) -> TreeNode: if not root: return root.left,root.right = self.mirrorTree(root.right),self.mirrorTree(root.left) return root

2021-03-31 23:02:24 343

原创 合并两个有序链表

合并两个有序链表输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。class Solution: def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode: cur=dump=ListNode(0) while l1 and l2: if l1.val < l2.val: cur.next,l1=l1,

2021-03-31 20:47:46 33

原创 反转链表

定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 class Solution: def reverseList(self, head: ListNode) -> ListNode: pre,cur=None,head while cur: tmp=cur.next cur.next=pre pre=cur cur=tmp r

2021-03-31 20:28:00 32

原创 链表中倒数第k个节点(双指针)

链表中倒数第k个节点(双指针)题目:输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。比如:给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4->5.class Solution: def getKthFromEnd(self, head: ListNode, k: int) -> ListNode: former,latter=head,head

2021-03-27 22:20:56 93

原创 调整数组顺序使奇数位于偶数前面

调整数组顺序使奇数位于偶数前面题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。class Solution: def exchange(self, nums: List[int]) -> List[int]: i,j=0,len(nums)-1 while i < j : while i<j and (nums[i] % 2) !=0:

2021-03-27 21:35:20 39

原创 删除链表的节点

删除链表的节点题目:给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点class ListNode: def __init__(self, x, next=None): self.val = x self.next = nextclass Solution: def deleteNode(self, head: ListNode, val: int) -> ListNode: if h

2021-03-27 18:54:56 60

原创 打印从1到最大的n位数

打印从1到最大的n位数题目:输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。方法一:n位数的十进制数表示为10的n次方减一from typing import Listclass Solution: def printNumbers(self, n: int) -> List[int]: return [i for i in range(1,10**n)]a=3b=Solution()

2021-03-25 00:06:46 34

原创 二进制中1的个数

二进制中1的个数方法一:运用与运算和移位,逐个计算class Solution: def hammingWeight(self, n: int) -> int: res =0 while n: res += n & 1 n >>= 1 return res方法二:使用n和n-1进行与运算,每次将n的最右边的1变为0class Solution: def hamm

2021-03-23 15:43:55 41

原创 旋转数组的最小数字

题目:旋转数组的最小数字把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。解法一:二分法判断mid在那个排序序列,然后接着查找class Solution: def minArray(self, numbers: List[int]) -> int: left=0 right=len(nu

2021-03-23 14:59:28 37

原创 青蛙跳台阶问题

方法一:递归方法,因为递归法时间复杂度过高,主要展示动态规划方法方法二:动态规划class Solution: def numWays(self, n: int) -> int: a,b=0,1 for i in range(n+1): a,b=b,a+b return a也可将数字放在list里面,代码如下所示:class Solution: def fib(self, n: int) -> in

2021-03-22 22:51:45 47

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除