![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笔记
口袋里的星星
爱拼才会赢
展开
-
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 · 230 阅读 · 0 评论 -
516. 最长回文子序列 1312. 让字符串成为回文串的最少插入次数 动态规划
思路整理自公众号: labuladong给定一个字符串 s ,找到其中最长的回文子序列,并返回该序列的长度。可以假设 s 的最大长度为 1000 。示例 1:输入:"bbbab"输出:4一个可能的最长回文子序列为 "bbbb"。示例 2:输入:"cbbd"输出:2一个可能的最长回文子序列为 "bb"。提示:1 <= s.length <= 1000s 只包含小写英文字母解题思路注意子序列和子串的区别,子串是连续的,子序列是不连续的。这类问题都是让你求一个最原创 2020-09-01 16:05:34 · 554 阅读 · 0 评论 -
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 · 161 阅读 · 0 评论 -
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 · 119 阅读 · 0 评论 -
二叉树的遍历
前序遍历根节点 -> 左子树 -> 右子树前序遍历直行结果为:[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 · 110 阅读 · 0 评论 -
堆的插入与删除
堆的节点在堆中,索引为 i 的节点,父节点为 father = (i - 1) // 2, 左子节点为left = 2 * i + 1, 右子节点为right = 2 * i + 2 。堆的插入元素的插入,本质就是一个元素上浮的过程。先添加到列表的末尾,然后向上调整插入到合适的位置以维护最小堆的特性。堆的删除堆顶元素的删除本质就是一个元素下沉的过程。如下图要删除0,先找到最后一个元素,并代替堆顶元素,然后调整其位置。具体过程是:先比较左右孩子节点的大小,然后用堆顶元素和这个小的值比,如果堆顶元原创 2020-08-17 11:23:45 · 375 阅读 · 0 评论 -
跳台阶 变态跳台阶 斐波那契数列
斐波那契数列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 · 202 阅读 · 1 评论 -
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 · 185 阅读 · 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 · 445 阅读 · 0 评论 -
网易雷火笔试 优先队列 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 · 223 阅读 · 0 评论 -
二叉树的层序遍历和蛇形遍历 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 · 269 阅读 · 0 评论 -
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 · 1484 阅读 · 0 评论 -
回溯 递归 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 · 203 阅读 · 1 评论 -
排序算法 冒泡排序 快排 归并排序
冒泡排序冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。步骤:比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。原创 2020-07-24 21:41:57 · 193 阅读 · 0 评论 -
约瑟夫环 面试题62. 圆圈中最后剩下的数字
0,1,,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。示例 1:输入: n = 5, m = 3输出: 3示例 2:输入: n = 10, m = 17输出: 2限制:1 ...原创 2020-03-31 09:35:30 · 138 阅读 · 0 评论 -
广度优先搜索 1162. 地图分析
广度优先搜索需要设置一个辅助队列你现在手里有一份大小为 N x N 的『地图』(网格) grid,上面的每个『区域』(单元格)都用 0 和 1 标记好了。其中 0 代表海洋,1 代表陆地,你知道距离陆地区域最远的海洋区域是是哪一个吗?请返回该海洋区域到离它最近的陆地区域的距离。我们这里说的距离是『曼哈顿距离』( Manhattan Distance):(x0, y0) 和 (x1, y1) 这...原创 2020-03-29 10:53:05 · 148 阅读 · 0 评论 -
回溯题模板和例题 39. 组合总和 40. 组合总和 II 216. 组合总和 III 22. 括号生成
参考的 https://zhuanlan.zhihu.com/p/112926891 ,模板不错,亲测有效回溯算法就是使用递归。使用回溯法的明显标志排列、组合(子集、幂集、字符全排列)。 在传值时,对于排列问题,是要删掉单个用过的元素;组合问题,是删掉前面所有的元素。数组、字符串,给定一个特定的规则,尝试搜索迭代找到某个解。二维数组下的DFS搜索(八皇后、黄金矿工、数独)解题思路...转载 2020-03-18 22:31:00 · 112 阅读 · 0 评论 -
python字典
dict.items()以列表返回可遍历的(键, 值) 元组数组dict.keys()以列表返回一个字典所有的键dict.values()以列表返回字典中的所有值dict.get(key, default=None)返回指定键的值,如果值不在字典中返回default值字典排序:按key排序:dict_sort = sorted(dict1.items(), key=lambda...原创 2020-03-13 09:44:50 · 164 阅读 · 0 评论 -
牛客笔试python输入输出
当输入是单个整数时:n = int(input())当输入的一行有多个整数时,使用split函数将不同的整数分开,将其转为整形,再转为list列表a = list(map(int, input().split()))当持续有输入且不知道有多少行时,使用sys.stdin,会一直接受不同行的而输入,直到没有输入import sys for line in sys.stdin: ...原创 2020-03-12 10:18:12 · 4567 阅读 · 0 评论 -
Batch normalization批标准化
Batch normalization深度学习尤其是在CV上都需要对数据做归一化,因为深度神经网络主要就是为了学习训练数据的分布,并在测试集上达到很好的泛化效果,但是,如果我们每一个batch输入的数据都具有不同的分布,显然会给网络的训练带来困难。另一方面,数据经过一层层网络计算后,其数据分布也在发生着变化,此现象称为Internal Covariate Shift。机器学习领域有个很重要的假...转载 2019-12-11 08:32:21 · 134 阅读 · 0 评论 -
Leetcode 861. 翻转矩阵后的得分
861. 翻转矩阵后的得分题目描述有一个二维矩阵 A 其中每个元素的值为 0 或 1 。移动是指选择任一行或列,并转换该行或列中的每一个值:将所有 0 都更改为 1,将所有 1 都更改为 0。在做出任意次数的移动后,将该矩阵的每一行都按照二进制数来解释,矩阵的得分就是这些数字的总和。返回尽可能高的分数。思路贪心算法1、 先行变换保证第0列全部是1,即最高位全部为12、 在进行列变...原创 2019-11-27 09:57:12 · 100 阅读 · 0 评论 -
870. 优势洗牌
leetcode 870. 优势洗牌题目描述给定两个大小相等的数组 A 和 B,A 相对于 B 的优势可以用满足 A[i] > B[i] 的索引 i 的数目来描述。返回 A 的任意排列,使其相对于 B 的优势最大化。解题思路类似于田忌赛马。使用贪心算法,每次找出A中最小牌来配对B中比他小的,这时候B中的不一定要是最小的,假如此时A中最小为a,那么A剩下的牌对可以与a配对的牌都是具有优...原创 2019-11-26 09:58:27 · 200 阅读 · 0 评论 -
堆排序 python
堆排序 python堆的结构可以分为大根堆和小根堆,是一个完全二叉树,而堆排序是根据堆的这种数据结构设计的一种排序。每个结点的值都大于其左孩子和右孩子节点的值,称之为大根堆;每个节点的值都小于其左孩子和右孩子节点的值,称之为小根堆基本思想:1.首先将待排序的数组构造成一个大根堆,此时,整个数组的最大值就是堆结构的顶端2.将顶端的数与末尾的数交换,此时,末尾的数为最大值,剩余待排序数组个数...转载 2019-11-21 11:41:12 · 164 阅读 · 0 评论 -
python 快速排序
快速排序参考快速排序 的挖坑填数的思想写的python实现。快排就是一个不断和基准点比较的过程,比基准点大的放到右边,小于或者等于的放到左边,然后进行递归。1、i =left; j = right;首先选定数组第一个数为基准数,并把它赋值给temp, 相当于挖了一个坑2、然后先从后往前找一个比他小的数,找到这个数之后将其挖出此数填到之前的坑中,再从前往后找比基准数大的,填到刚才挖的坑中,两...原创 2019-11-05 10:20:34 · 141 阅读 · 0 评论 -
八皇后问题 python
八皇后问题 pythondef queen(queen_list, current_column=0): for row in range(len(queen_list)): # 如果已至最后一列,则打印结果,跳出递归 if current_column == len(queen_list): for i in range...原创 2019-10-14 21:28:10 · 187 阅读 · 0 评论 -
创建和读取tfrecords
创建和读取tfrecords创建tfrecords读取tfrecords创建tfrecords// create tfrecordsimport tensorflow as tf import numpy as np tfrecords_filename = './data/train.tfrecords'writer = tf.python_io.TFRecordWriter(tf...原创 2019-08-14 09:38:09 · 156 阅读 · 0 评论