自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 剑指offer03-数组中重复数字(js)

/** * @param {number[]} nums * @return {number} */var findRepeatNumber = function(nums) { let map = new Map();/*①Let和var的区别?②{}什么时候加? */ for (let i of nums) {/* ①i of nums是什么操作?②.has()是什么操作 */ if (map.has(i)) /*①左花括号和类名放同一行,冒号与属性值间有空格②右

2021-03-24 21:28:53 85

原创 图解HTTP

一. 了解web和网络基础web使用http(HyperText Transfer Protocol,超文本传输协议)的协议作为规范,完成客户端到服务器端的流程TCP/IP协议族(http为其一个内部子集)TCP协议(确保可靠性,提供可靠字节流服务)**字节流:**为方便传输,将大块数据分割程以报文段为单位的数据包进行管理三次握手:IP协议将各种数据包传送给对方。确保成功的两个重要条件①ip地址:节点被分配到的地址(可变换)②MAC地址:网卡所属固定地址(基本不会改)DNS服务(应用层,域

2021-03-01 22:20:09 123

原创 剑指offer41-数据流中的中位数(堆/优先队列)

解法一:有序列表保存数据流addNum 查找元素插入位置o(logn)(二分查找)+ 插入元素o(n)findNum o(logn)解法二:建立一个大根堆和小根堆,空间复杂度o(n)addNum o(logn)findNum o(1)from heapq import *class MedianFinder: def __init__(self): self.A=[] self.B=[] def addNum(self, num: int)

2021-01-04 21:06:36 111

原创 leetcode-基于排序思想

leetcode45-把数组排成最小的数字解法:基于快排,改变判断规则为class Solution: def minNumber(self, nums: List[int]) -> str: def fast_sort(l,r): if l >= r: return i,j=l,r while i < j: while s

2020-12-30 21:19:16 63

原创 剑指offer62-约瑟夫环

解法一:构造环型链表时间复杂度o(nm),空间复杂度o(n)class Node(object): def __init__(self,x): self.val=x self.next=Noneclass Solution: def lastRemaining(self, n: int, m: int) -> int: head=Node(0) tmp=head for i in range(1,n

2020-12-29 21:33:24 91 1

原创 栈,队列

剑指offer59-Ⅰ 滑动窗口的最大值class Solution: def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]: # deque保存当前最大值,和下一个可能的最大值。未形成窗口和形成窗口分别放在两个循环,时间复杂度o(n)),空间复杂度o(1) if not nums: return [] deque=collections.deq

2020-11-26 19:48:18 73

原创 动态规划题总结(??找到无穷处理初始值的题)

剑指offer10-青蛙跳台阶(与斐波拉契数列相同)class Solution: def numWays(self, n: int) -> int: l=[1 for _ in range(n+1)] for i in range(2,n+1): l[i]=l[i-1]+l[i-2] return l[n]% 1000000007# 取模100000007为了确保结果在32位范围内...

2020-11-24 21:48:41 132

原创 剑指offer66-乘积数组

剑指offer66-乘积数组两次遍历class Solution: def constructArr(self, a: List[int]) -> List[int]: b, tmp = [1] * len(a), 1 for i in range(1, len(a)): b[i] = b[i - 1] * a[i - 1] # 下三角 for i in range(len(a) - 2, -1, -1):

2020-11-16 18:06:16 85 1

原创 剑指offer35-复杂链表的复制

剑指offer35-复杂链表的复制解法一:解法二:

2020-11-09 21:29:15 63

原创 剑指offer33-二叉树的遍历

方法一:递归*思路:通过递归判断所有子树的正确性(后序遍历是否满足二叉搜索树的定义)递归解析:终止条件: i>=j,说明此子树节点数量<=1递推工作:1. 划分左右子树: 遍历[i,j]区间的元素,寻找第一个大于跟节点的节点,索引记为m。所以左子树区间[i,m-1],右子树区间[m,j],跟索引j2. 判断是否为二叉搜索树:返回值:p == j 判断此树是否正确recur(i,m-1) 判断此树的左子树是否正确recur(m,j-1) 判断此树的右子树是否正确...

2020-09-28 17:07:55 96

原创 顺时针打印矩阵

class Solution: def spiralOrder(self, matrix:[[int]]) -> [int]: if not matrix: return [] l, r, t, b, res = 0, len(matrix[0]) - 1, 0, len(matrix) - 1, [] while True: for i in range(l, r + 1): res.append(matrix[t][i

2020-09-10 00:01:03 55

原创 剑指offer18-删除链表节点

class Solution: def deleteNode(self, head: ListNode, val: int) -> ListNode: dummy = ListNode(0) # 设置伪结点 dummy.next = head if head.val == val: return head.next # 头结点是要删除的点,直接返回 while head and head.next: ...

2020-08-06 21:31:34 77

原创 合并有序数组/链表

合并有序数组并保存在nums1中class Solution: def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None: p1 = m - 1 p2 = n - 1 p = m + n - 1 while p1 >= 0 and p2 >= 0: if nums1[p1] < nums2[p2

2020-08-03 04:57:38 97

原创 leetcode(剑指offer16)-数值的整数次平方

剑指书阅读第三章高质量的代码之代码的规范性缩进,命名(用完整的英文单词组合命名变量和函数,不要用关键词)代码的完整性软件开发中需求在变,写代码时候能够把未来需求可能的变化考虑进去,在需求变化时减少代码改动的风险,程序的可扩展性和可维护性三方面:功能测试基本功能考虑完全边界测试循环的终止条件递归的终止条件负面测试(各种可能的错误输入)把错误信息传递给函数的调用者有三种方法①返回值 不能方便使用计算结果②全局变量 能够使用计算结果,但用户容易忘记检查全局变量③异常可以为不同的出错

2020-07-25 21:59:07 762

原创 面试

B测开2道sql写代码:最长不重复子串进程与线程三次握手与四次握手链表与数组区别c语言中的并发?对数据库了解多少测试题:开发一个在浏览器和移动端都能使用的书签功能,用户不仅可以通过保存书签功能保存url地址,还能通过点击书签中的url地址到达保存的页面。。。编写测试用例(当我编写功能性后,说兼容性没有被考虑)...

2020-07-23 02:54:59 79

原创 梦开始的地方——二叉树(?)

leetcode104-二叉树的最大深度解法一:递归时间复杂度O(n) 空间复杂度# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def maxDepth(self, root: Tre

2020-07-23 02:19:16 146

原创 leetcode(剑指offer49)-第n个丑数(dp法))

O(n) O(n)class Solution: def nthUglyNumber(self, n: int) -> int: if n <= 0: return -1 dp,a,b,c = [1] * n,0 ,0 ,0 for i in range(1,n): n2,n3,n5 =dp[a] * 2,dp[b] * 3,dp[c] * 5 dp[i] =

2020-07-22 16:23:39 86

原创 剑指offer61-扑克顺子

set加遍历 O(n)class Solution: def isStraight(self, nums: List[int]) -> bool: repeat = set() ma, mi = 0, 14 for num in nums: if num == 0: continue # 跳过大小王 ma = max(ma, num) # 最大牌 mi = min(mi,

2020-07-22 06:03:04 84

原创 刷题中的字符串

剑指offer05-替换空格知识点:字符串不可变时间复杂度 O(n)class Solution: def replaceSpace(self, s: str) -> str: res = [] for c in s: if c == ' ': res.append("%20") else: res.append(c) retur

2020-07-22 05:39:39 114 2

原创 二维数组的查找

解法一:时间复杂度O(m+n) 空间复杂度O(1)class Solution: def findNumberIn2DArray(self, matrix: List[List[int]], target: int) -> bool: i,j = len(matrix) - 1,0 while i >= 0 and j < len(matrix[0]): if matrix[i][j] > target:i -= 1

2020-07-22 05:26:40 67

原创 刷题中的滑动窗口总结(定期更新)

据说共有10道左右,找出来剑指 Offer 57 和为s的连续正数序列剑指 Offer 48. 最长不含重复字符的子字符串

2020-07-21 00:33:50 87

原创 最小长度子序列

class Solution: def minSubArrayLen(self, s: int, nums: List[int]) -> int: if not nums: return 0 left = 0 cur = 0 res = float("inf") for right in range(len(nums)): cur += nums[right]

2020-07-21 00:30:56 185

原创 leetcode(剑指offer12)-矩阵中的路径(递归和回溯法不懂)

?为什么word为空时下标溢出呢class Solution: def exist(self, board: List[List[str]], word: str) -> bool: if not board or not word: return False def dfs(i,j ,k): if not 0 <= i < len(board) or not 0 <= j < l...

2020-07-20 23:51:32 72

原创 leetcode(剑指offer47)-礼物的最大价值(dp法,学习二维数组)

和机器人走矩阵题目一样,问题不一样本题求最值,那题求sum。难点:i,j 为0等等的边界值!!!!m,n = len(grid),len(grid[0])class Solution: def maxValue(self, grid: List[List[int]]) -> int: m,n = len(grid),len(grid[0]) for j in range(1,n): grid[0][j] += grid[0][

2020-07-19 20:47:22 106

原创 leetcode(剑指offer48)-最长不含重复字符的子字符串(dp法)

解题思路:长度为n的字符串共有(n+1)n/2个子串,用暴力法O(n^3),因此用dp降低时间复杂度解法一:dp+hash表 时间复杂度O(n),空间复杂度O(1)哈希表统计: 遍历字符串 ss 时,使用哈希表(记为 dicdic )统计 各字符最后一次出现的索引位置 。左边界 ii 获取方式: 遍历到 s[j]s[j] 时,可通过访问哈希表 dic[s[j]]dic[s[j]] 获取最近的相同字符的索引 ii空间复杂度 O(1): 字符的 ASCII 码范围为 00 ~ 127127 ,

2020-07-19 00:33:31 398

原创 剑指offerJZ63-数据流中位数(常见数据结构复杂度)

思路:① 需要一个数据容器来保存从流中读出来的数据②补充知识:无序数组中位数解法一:先排序再找中位数解法二:小根堆(网上代码跑不了,堆排序不熟,不知道是那道题,只知道这样O(n))思想是:1 对无序数组的前len(array)//2长度的元素建立最小堆,这样就得到了一个堆顶元素小于任意一个堆里的元素2 将剩下的一半元素依次与堆顶元素比较。若比堆顶元素大,则替换之,并调整堆。(也就是说:依次遍历剩下一般的元素,与当前的堆顶元素作比较,如果大于堆顶元素,则替换,这时,重新调整堆的结构,使其

2020-07-12 19:58:52 144

原创 剑指offerJZ41-和为S的连续正数和序列

解法一:for,for解法, 时间复杂度O(N^2)class Solution: def FindContinuousSequence(self, tsum): if tsum <= 1: return [] newli = [] li = [] sum = 0 for i in range(1,tsum): sum = 0 for

2020-07-08 17:27:23 94

原创 刷题中巧用逻辑运算总结(不定期跟新)

如题咯

2020-07-06 22:17:29 104

原创 剑指offerJZ28 - Leetcode 多数投票

0705阅读书中关于时间效率的介绍时间效率体现在① 编程习惯② 同一算法用递归或者循环时间效率不一样。递归如果小问题中有相互重叠的部分,时间效率差。解决办法是用递归思路分析问题,写代码时用数组保存中间结果基于循环实现。绝大部分dp算法分析和代码实现基于这两个步骤,参见礼物的最大价值(没做) 最长不含重复的子字符串(没做)③ 对数据结构与算法的掌握 查找,顺序查找O(n),排序数组查找O(logn),哈希表O(1)**剑指offer28 == Leeetcode 多数投票利用内置函数 sort c

2020-07-05 17:41:30 102

原创 刷题中的链表总结(持续跟新)

反转链表注意:链表问题伴随着大量指针操作。面试时不要急着写代码,仔细分析设计不容易出错。由于链表是不连续存储的。当调节节点i的next指针时,需要(这里用tmp)来保存后节点的位置常见错误:① 输入链表头指针为null(特殊输入测试)或只有一个节点(一个功能测试)时,程序崩溃②反转链表出现断裂③返回的头节点不是原始链表的尾节点解决方法:提前想好测试用例,心中默默运行代码进行单元测试,再交给面试官循环解法# # class ListNode:# def __init__(s

2020-07-04 01:27:02 241

原创 刷题中的贪心算法总结(持续跟新)

0702看了左神介绍贪心算法一个视频,用拼接成字典序最低字符串这道题(leetcode上要会员才能解锁)来介绍。提出一种新的比较规则见下面类似的题。*剑指32 把数组排成最小的数题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。解题思路:先将整型数组转换成String数组,然后将String数组排序,最后将排好序的字符串数组拼接出来。关键就是制定排序规则。排

2020-07-02 23:46:32 256

原创 刷题中的二分查找,双指针总结(持续跟新)

二分查找# -*- coding:utf-8 -*-class Solution: def GetNumberOfK(self, data, k): if not data or data[0] > k or data[-1] < k: return 0 low = 0 high = len(data) - 1 cnt = 0 while low <= high:

2020-07-02 20:06:49 192

原创 剑指offerJZ40-数组中只出现一次的数字

解法一:python count内置函数if array.count(i) == 1:res.append(i)解法二:hashmap,见总结篇博客解法三:逻辑运算,利用异或,见总结篇博客。数同自己异或为0.分成两组,各组包含一个孤儿数(利用二进制第一个为1的位是否位1分为两组)...

2020-07-02 17:44:57 142

原创 刷题中的HashMap,dict总结(持续跟新)

HashMap:一种数据结构dict:将键映射到值的一种映射类型注意:key唯一key是可hash的数据类型(int,str,tuple,bool),注意不可hash的数据类型有:list, dict,set剑指:数组中只出现一次的数字

2020-07-02 17:23:41 285

原创 初探动态规划解leetcode coin change,unique paths,jump game(JAVA)

学习视频:b站九章算法试听课:动态规划入门 Introduction to Dynamic Programming四个步骤总结:初体验java,状态方程写出来了就做出来一半,剩下的是代码实现,重视边界条件题型:三种一 计数时间复杂度O(MN) 空间复杂度(数组大小)O(MN))二 求最值时间复杂度O(MN)三 存在性O(N²) 据说该题用贪心复杂度会小一点,我不会啊...

2020-07-02 01:40:20 132

空空如也

空空如也

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

TA关注的人

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