- 博客(110)
- 收藏
- 关注
转载 2021-08-04
出口业务节点报文CEB303Message 为订单报文CEB304Message 为订单回执报文CEB403Message 为收款单报文CEB404Message为收款单回执报文CEB505Message 为运单报文CEB506Message 为运单回执报文CEB507Message 为运抵单报文CEB508Message 为运单状态回执报文CEB603Message 为出口清单报文CEB604Message 为出口清单回执报文CEB605Message 为撤销申请单报文CEB606
2021-08-05 17:02:11 367
转载 WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connec
解决git出现Could not resolve proxy: https的错误WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', NewConnectionError('<pip._vendor.urllib3.connection.HTTPC
2021-04-07 21:22:02 4481 2
原创 SQL 182. 查找重复的电子邮箱
编写一个 SQL 查询,查找 Person 表中所有重复的电子邮箱。示例:+----+---------+| Id | Email |+----+---------+| 1 | a@b.com || 2 | c@d.com || 3 | a@b.com |+----+---------+根据以上输入,你的查询应返回以下结果:+---------+| Email |+---------+| a@b.com |+---------+说明:所有电子邮箱都是小写字母。
2020-09-07 10:49:57 264
原创 516. 最长回文子序列 1312. 让字符串成为回文串的最少插入次数 动态规划
思路整理自公众号: labuladong给定一个字符串 s ,找到其中最长的回文子序列,并返回该序列的长度。可以假设 s 的最大长度为 1000 。示例 1:输入:"bbbab"输出:4一个可能的最长回文子序列为 "bbbb"。示例 2:输入:"cbbd"输出:2一个可能的最长回文子序列为 "bb"。提示:1 <= s.length <= 1000s 只包含小写英文字母解题思路注意子序列和子串的区别,子串是连续的,子序列是不连续的。这类问题都是让你求一个最
2020-09-01 16:05:34 594
原创 113. 二叉树路径总和 II 124. 二叉树中的最大路径和
给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1返回:[ [5,4,11,2], [5,8,4,5
2020-08-31 19:56:27 177
原创 34. 在排序数组中查找元素的第一个和最后一个位置 二分查找
给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是 O(log n) 级别。如果数组中不存在目标值,返回 [-1, -1]。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: [3,4]示例 2:输入: nums = [5,7,7,8,8,10], target = 6输出: [-1,-1]解题思路分别用二分查找来寻找左边界和右边界,时间复杂度为O(logn)
2020-08-26 19:36:31 140
原创 二叉树的遍历
前序遍历根节点 -> 左子树 -> 右子树前序遍历直行结果为:[1,2,4,8,9,5,10,11,3,6,12,13,7,14,15]递归法# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):# self.val = x# self.left = None# self.right = Nonecl..
2020-08-26 10:28:47 125
原创 堆的插入与删除
堆的节点在堆中,索引为 i 的节点,父节点为 father = (i - 1) // 2, 左子节点为left = 2 * i + 1, 右子节点为right = 2 * i + 2 。堆的插入元素的插入,本质就是一个元素上浮的过程。先添加到列表的末尾,然后向上调整插入到合适的位置以维护最小堆的特性。堆的删除堆顶元素的删除本质就是一个元素下沉的过程。如下图要删除0,先找到最后一个元素,并代替堆顶元素,然后调整其位置。具体过程是:先比较左右孩子节点的大小,然后用堆顶元素和这个小的值比,如果堆顶元
2020-08-17 11:23:45 424
原创 跳台阶 变态跳台阶 斐波那契数列
斐波那契数列1,1,2,3,5,8…递推式为: f(n)=f(n-1)+f(n-2)青蛙跳台阶一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果。思路青蛙的最后一次跳法只有两种:一阶和二阶,所以 f(n)=f(n-1)+f(n-2),其实就是斐波那契数列,修改一下0,1的元素和输出的数组下标就可以了class Solution: def fib(self, n: int) -> int: if n==
2020-08-17 10:33:24 234 1
原创 背包问题 416. 分割等和子集
常见的背包问题。给你一个可装载重量为W的背包和N个物品,每个物品有重量和价值两个属性。其中第i个物品的重量为wt[i],价值为val[i],现在让你用这个背包装物品,最多能装的价值是多少?举个简单的例子,输入如下:N = 3, W = 4wt = [2, 1, 3]val = [4, 2, 3]算法返回 6,选择前两件物品装进背包,总重量 3 小于W,可以获得最大价值 6。# 0-1背包问题import sys wt = [2, 1, 3]val = [4, 2, 3]N =
2020-08-13 20:45:30 229
原创 剑指 Offer 25. 合并两个排序的链表 递归
输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。示例1:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4解题思路递归:终止条件:两条链表分别名为 l1 和 l2,当 l1 为空或 l2 为空时结束返回值:每一层调用都返回排序好的链表头本级递归内容:如果 l1 的 val 值更小,则将 l1.next 与排序好的链表头相接,l2 同理# Definition for singly-
2020-08-10 16:43:44 248
原创 链表翻转 剑指 Offer 24. 反转链表 shopee笔试 234. 回文链表
剑指 Offer 24. 反转链表定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL限制:0 <= 节点个数 <= 5000解题思路# Definition for singly-linked list.# class ListNode(object):# def __init__(se
2020-08-05 21:05:24 208
原创 shopee笔试 41. 缺失的第一个正数 原地哈希 剑指 Offer 03. 数组中重复的数字
给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。示例 1:输入: [1,2,0]输出: 3示例 2:输入: [3,4,-1,1]输出: 2示例 3:输入: [7,8,9,11,12]输出: 1提示:你的算法的时间复杂度应为O(n),并且只能使用常数级别的额外空间。解题思路常规思路:将数组排序再遍历,时间复杂度O(nlogn);或者使用哈希表将所有的值存起来,再从1开始查找,时间复杂度为O(n),空间复杂度为O(n).原地哈希:遍历一次数组把大于等于1和小于等于数组
2020-08-05 19:28:00 204 1
原创 leetcode 重叠区间问题 合并区间 452. 用最少数量的箭引爆气球 435. 无重叠区间
重叠区间问题重叠区间问题可以总结为在坐标轴上若干个位置为 [start(i), end(i)] 的区间,要求求解这些区间中有多少个不重叠区间,或者合并重叠的区间。常见题型:合并区间: leetcode 56(合并区间) leetcode 763(先统计,再合并区间)计算不重叠区间的个数: leetcode 435(不重叠区间个数) leetcode 452(相邻区间视为重叠区间)合并区间问题1、对数列的按首元素排序2、得到初始数列 init=nums[0]3、判断
2020-08-05 17:16:47 468
原创 网易雷火笔试 优先队列 heapq 堆
猪场周边商场有n种不同的商品,第i种商品有g_i件。现在需要组织一次买福袋的活动,每个福袋恰好有k件不同种类的商品,求最多能组成多少个福袋。输入描述:第一行为2个正整数,表示商场共有N种不同商品,每个额福袋需要k种不同商品第二行为N个正整数,表示商场每种商品的件数。输出描述:福袋个数解题思路利用了优先队列。举例:k = 3[10, 8, 8, 7, 7]第一次:[9, 7, 7, 7, 7], res = 1第二次:[8, 6, 6, 7, 7], res = 2利用优先队列
2020-08-04 21:34:05 238
原创 二叉树的层序遍历和蛇形遍历 102. 二叉树的层序遍历 103. 二叉树的锯齿形层次遍历
给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]使用辅助队列# Definition for a binary tree node.# class TreeNode(object):# def __init__(self
2020-08-01 22:46:17 315
原创 python定义链表结构 将数组转为链表
import sys # 定义链表的数据结构class ListNode: def __init__(self, x): self.val = x self.next = None # 将数组转为链表结构def generate_node(nums): # 定义一个哑节点 p_head = ListNode(-1) temp_head = p_head for num in nums: temp = List
2020-07-29 20:23:31 1529
原创 142. 环形链表 II 环形链表的入口节点
给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connects to node index 1解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head = [1,2], pos = 0输
2020-07-29 20:19:30 213
原创 141. 环形链表 判断链表是否有环
给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head = [1,2], pos = 0输出:true解释:链表中有一个环,其尾部连接到第一个节点。示例 3:输入:head = [1], pos = -1
2020-07-29 19:24:38 123
原创 160. 相交链表 判断链表是否有交点 双指针
编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:相交的链表从相交点开始后面的节点全部共用。解题思路双指针。我们通常做这种题的思路是设定两个指针分别指向两个链表头部,一起向前走直到其中一个到达末端,另一个与末端距离则是两链表的 长度差。再通过长链表指针先走的方式消除长度差,最终两链表即可同时走到相交点。# Definition for singly-linked list.# class ListNode(object):# def __init__(self, x):
2020-07-29 19:03:40 181
原创 回溯 递归 C++ 切片
#include <iostream>#include <vector>#include <cmath>using namespace std;vector<vector<int> > res;int num = 0;void backhelper( vector<int>& state, vector<int>& cond){ if( cond.size() == 1 ){
2020-07-27 21:56:35 241 1
原创 排序算法 冒泡排序 快排 归并排序
冒泡排序冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。步骤:比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
2020-07-24 21:41:57 213
原创 1482. 制作 m 束花所需的最少天数
给你一个整数数组 bloomDay,以及两个整数 m 和 k 。现需要制作 m 束花。制作花束时,需要使用花园中 相邻的 k 朵花 。花园中有 n 朵花,第 i 朵花会在 bloomDay[i] 时盛开,恰好 可以用于 一束 花中。请你返回从花园中摘 m 束花需要等待的最少的天数。如果不能摘到 m 束花则返回 -1 。示例 1:输入:bloomDay = [1,10,3,10,2], m = 3, k = 1输出:3解释:让我们一起观察这三天的花开过程,x 表示花开,而 _ 表示花还未开。现
2020-07-24 17:17:54 225
原创 字节笔试题 剑指 Offer 43. 1~n整数中1出现的次数
输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数。例如,输入12,1~12这些整数中包含1 的数字有1、10、11和12,1一共出现了5次。示例 1:输入:n = 12输出:5示例 2:输入:n = 13输出:6限制:1 <= n < 2^31解题思路总体思想就是分类,先求所有数中个位是 1 的个数,再求十位是 1 的个数,再求百位是 1 的个数…假设 n = xyzdabc,此时我们求千位是 1 的个数,也就是 d 所在的位置。那么此时有三种情况,
2020-07-23 10:44:52 185 1
原创 剑指 Offer 11. 旋转数组的最小数字 面试题 10.03. 搜索旋转数组 二分查找
剑指 Offer 11. 旋转数组的最小数字把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。 示例 1:输入:[3,4,5,1,2]输出:1示例 2:输入:[2,2,2,0,1]输出:0解题思路二分查找,注意当numbers[mid]==numbers[right]时无法判断class Solution:
2020-07-19 17:45:02 187
原创 剑指 Offer 46. 把数字翻译成字符串 动态规划 回溯
给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。示例 1:输入: 12258输出: 5解释: 12258有5种不同的翻译,分别是"bccfi", "bwfi", "bczi", "mcfi"和"mzi"回溯class Solution: def translateNum(self, num: int) -&
2020-07-07 15:51:24 125
原创 字节面试题 数组元素的组合 回溯
字节跳动一面算法题求数组中所有元素的组合(比如[1,2,2],组合有[[], [1],[2], [1,2],[2,2],[1,2,2]])很明显使用回溯算法可以解决nums = [1,2,2]nums.sort()res = [[]]def backtrack(nums, temp): # res.append(temp) for i in range(len(nums)): if i>0 and nums[i-1]==nums[i]:
2020-07-07 15:42:54 157
原创 69. x 的平方根 二分查找 x为整数和浮点数的情况
实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。解题思路需要向上取整class Solution: def mySqrt(self, x: int) -> int: if x == 0:
2020-07-05 16:40:26 163
原创 32. 最长有效括号 栈 动态规划
给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度。示例 1:输入: "(()"输出: 2解释: 最长有效括号子串为 "()"示例 2:输入: ")()())"输出: 4解释: 最长有效括号子串为 "()()"解题思路class Solution(object): def longestValidParentheses(self, s): """ :type s: str :rtype: int
2020-07-04 20:51:25 1906
原创 动态规划 递归 dfs 139. 单词拆分
给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入: s = "leetcode", wordDict = ["leet", "code"]输出: true解释: 返回 true 因为 "leetcode" 可以被拆分成 "leet code"。示例 2:输入: s = "applepenapple", wordDict =
2020-06-25 11:39:18 163
原创 剑指 Offer 59 - I. 滑动窗口的最大值 单调队列
给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7] 解释: 滑动窗口的位置 最大值--------------- -----[1 3 -1] -3 5 3 6 7 3 1 [3 -1 -3] 5 3 6 7 3 1 3 [-1 -.
2020-06-24 11:27:11 526
原创 老鼠试药 信息熵 二进制 458. 可怜的小猪
有 1000 只水桶,其中有且只有一桶装的含有毒药,其余装的都是水。它们从外观看起来都一样。如果小猪喝了毒药,它会在 15 分钟内死去。问题来了,如果需要你在一小时内,弄清楚哪只水桶含有毒药,你最少需要多少只猪?回答这个问题,并为下列的进阶问题编写一个通用算法。进阶:假设有 n 只水桶,猪饮水中毒后会在 m 分钟内死亡,你需要多少猪(x)就能在 p 分钟内找出 “有毒” 水桶?这 n 只水桶里有且仅有一只有毒的桶。提示:可以允许小猪同时饮用任意数量的桶中的水,并且该过程不需要时间。小猪喝完水
2020-06-18 10:30:20 641
原创 1014. 最佳观光组合
给定正整数数组 A,A[i] 表示第 i 个观光景点的评分,并且两个景点 i 和 j 之间的距离为 j - i。一对景点(i < j)组成的观光组合的得分为(A[i] + A[j] + i - j):景点的评分之和减去它们两者之间的距离。返回一对观光景点能取得的最高分。示例:输入:[8,1,5,2,6]输出:11解释:i = 0, j = 2, A[i] + A[j] + i - j = 8 + 5 + 0 - 2 = 11提示:2 <= A.length <= 50000
2020-06-17 09:32:24 133
原创 单调栈 739. 每日温度 496. 下一个更大元素 I II III
栈具有先进后出的性质,单调栈就是利用一些巧妙的逻辑,是的栈内的元素都保持有序(单调递增或单调递减)739. 每日温度根据每日气温 列表,请重新生成一个列表,对应位置的输出是需要再等待多久温度才会升高超过该日的天数。如果之后都不会升高,请在该位置用 0 来代替。例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。提示:气温 列表长度的范围是 [1, 30000]。每个气温
2020-06-12 20:58:32 163
原创 739. 每日温度 单调栈
根据每日 气温 列表,请重新生成一个列表,对应位置的输出是需要再等待多久温度才会升高超过该日的天数。如果之后都不会升高,请在该位置用 0 来代替。例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。提示:气温 列表长度的范围是 [1, 30000]。每个气温的值的均为华氏度,都是在 [30, 100] 范围内的整数。解题思路题目的意思是要找到第一个比该天温度高的,求二
2020-06-11 10:40:59 184
原创 面试题46. 把数字翻译成字符串
给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。示例 1:输入: 12258输出: 5解释: 12258有5种不同的翻译,分别是"bccfi", "bwfi", "bczi", "mcfi"和"mzi"解题思路1、递归将大问题一个一个分解成小问题class Solution: def translate
2020-06-09 10:02:51 228
原创 605. 种花问题 2021vivo提前批笔试题
假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去。给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表示种植了花),和一个数 n 。能否在不打破种植规则的情况下种入 n 朵花?能则返回True,不能则返回False。示例 1:输入: flowerbed = [1,0,0,0,1], n = 1输出: True示例 2:输入: flowerbed = [1,0,0,0,1], n = 2输出: False
2020-06-08 22:09:34 260
原创 523. 连续的子数组和
给定一个包含非负数的数组和一个目标整数 k,编写一个函数来判断该数组是否含有连续的子数组,其大小至少为 2,总和为 k 的倍数,即总和为 n*k,其中 n 也是一个整数。示例 1:输入: [23,2,4,6,7], k = 6输出: True解释: [2,4] 是一个大小为 2 的子数组,并且和为 6。示例 2:输入: [23,2,6,4,7], k = 6输出: True解释: [23,2,6,4,7]是大小为 5 的子数组,并且和为 42。解题思路本题要找一个子数组的和是k的整数倍
2020-06-08 09:34:28 115
原创 201. 数字范围按位与
给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含 m, n 两端点)。示例 1: 输入: [5,7]输出: 4示例 2:输入: [0,1]输出: 0解题思路多个数按位与的过程中,只要有某一位出现了0,那么最终结果的这个位处的数一定为0。在[m, n]这些数里,加1改变的位数是从低到高的,即先改变低位,再改变高位。所以只需要比较最大的数n和最小的数m中从最高位开始完全相同的位,这就说明在递增的过程中+1的
2020-06-06 20:46:27 216
原创 394. 字符串解码 栈
给定一个经过编码的字符串,返回它解码后的字符串。编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。示例:s = "3[a]2[bc]", 返回 "aaabcbc".s = "3[a2[c]]"
2020-05-28 11:22:01 167
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人