![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
刷题
小小码农JACK
这个作者很懒,什么都没留下…
展开
-
2080. 区间内查询数字的频率
哈希表+二分查找class RangeFreqQuery: def __init__(self, arr: List[int]): self.cnts = defaultdict(list) for i,num in enumerate(arr): self.cnts[num].append(i) def query(self, left: int, right: int, value: int) -> int:原创 2021-11-23 20:00:17 · 348 阅读 · 0 评论 -
1992. 找到所有的农场组
从两边延伸,退耕还林def find_farmland(land): m, n, res = len(land), len(land[0]), [] for i in range(m): for j in range(n): if land[i][j] == 1: r, c = i, j while r < m - 1 and land[r + 1][j] == 1:原创 2021-11-19 17:44:45 · 399 阅读 · 0 评论 -
最小未被占据椅子的编号
最小未被占据椅子的编号解法:最小堆+哈希表我们需要一个数据结构来维护未被占据的椅子,且该数据结构需要在较低的时间复杂度内实现查询并弹出最小值与插入元素操作,我们可以用一个最小堆实现的优先队列来维护。# coding=utf-8from collections import defaultdictfrom heapq import heappush, heappop# 其他: heapify(heap) 让列表具备堆特征。def min_desk(times, targetFriend):原创 2021-11-18 17:19:21 · 276 阅读 · 0 评论 -
python&c++ zigzag conversion
Z字形变换Input: s = “PAYPALISHIRING”, numRows = 4Output: “PINALSIGYAHRPI”Explanation:P I NA L S I GY A H RP I原创 2019-11-04 21:55:09 · 84 阅读 · 0 评论 -
问题总结
Batch normalization为什么可以防止过拟合?可以少用或不用Dropout和正则使用BN训练时,一个样本只与minibatch中其他样本有相互关系;对于同一个训练样本,网络的输出会发生变化。这些效果有助于提升网络泛化能力,像dropout一样防止网络过拟合,同时BN的使用,可以减少或者去掉dropout类似的策略。在训练中,BN的使用使得一个mini-batch中的所有样本都被...原创 2019-04-16 15:31:44 · 90 阅读 · 0 评论 -
python----Edit Distance
编辑距离的定义是:从字符串A到字符串B,中间需要的最少操作权重。操作一般包括三种:删除一个字符插入一个字符替换一个字符编辑距离的算法一般用DP,在DP中可以理解为:删除A末尾一个字符用B末尾插入A末尾一个字符把A末尾字符替换成B末尾的一个字符def minDistance(word1,word2): m,n=len(word1),len(word2) dp=[[0 ...原创 2019-04-02 15:33:16 · 1109 阅读 · 0 评论 -
python实现Dijkstra最短路径算法
原地址:https://blog.csdn.net/qq_38322240/article/details/83029566class Graph_matrix(object): def __init__(self): self.storage_matrix = [] self.node_list = [] def make_picture(se...转载 2019-04-02 14:07:24 · 551 阅读 · 0 评论 -
从矩阵左上角到右下角的最大值
动态规划方法实现:动态规划三要素:最优子结构、边界、状态转移矩阵def maxRoute(array,m,n): for _ in range(1,n): array[0][_]=array[0][_-1]+array[0][_] for _ in range(1,m): array[_][0]=array[_-1][0]+array[0][_]...原创 2019-04-11 16:12:03 · 826 阅读 · 0 评论 -
python---字符串转int型
class Solution: def AutoStrToInt(self,s): s=s.lstrip() if not s: return 0 sign="" if s[0] in ["+","-"]: sign=s[0] s=s[1:] ...原创 2019-04-11 12:31:08 · 2285 阅读 · 0 评论 -
python----连续子序列最大和
#给定一个整数数组,找到一个具有最大和的子数组,返回其最大和array=[1,3,5,7,-2,9,100]array=[-2 ,6, -1, 5, 4, -7, 2, 3] res=array[0]temp=0if len(array)==0: print(res)for i in range(len(array)): temp+=array[i] res=m...原创 2019-04-11 11:15:57 · 1026 阅读 · 0 评论 -
腾讯----硬币面值组合问题
题目描述有n种不同面值的硬币,每种面值的硬币都有无限多个。为了方便携带,希望带尽量少的硬币,并且要能组合出1到m之间(包括1和m)的所有面值。输入第一行包含两个整数m, n,含义如题目所述。第二行包含n个整数,第i个整数表示第i种硬币的面值。输出输出一个整数,表示最少需要携带的硬币数量。如果无解,则输出-1。示例输入:20 41 2 5 10输出:5python解:ope...原创 2019-04-07 15:26:19 · 661 阅读 · 0 评论 -
组合数(杨辉三角)
组合数和杨辉三角有一一对应关系。杨辉三角中每个数字等于左上方数字和右上方数字的和(边界可以认为是0)11 11 2 11 3 3 11 4 6 4 1其中第n行,第m个对应的就是C(n,m)故遇到组合数问题可构建二维数组存储杨辉三角,再取对应位置的数字c++解法:#include<iostream>using namespace std;int mai...原创 2019-04-06 16:16:57 · 875 阅读 · 0 评论 -
二分查找变形
arr=list(map(int,input().split()))n=arr[0]m=arr[1]def get_sum(s): total=0 for i in range(n): total+=s s=(s+1)//2 return totallow=1high=mwhile(low<=high): mid=...原创 2019-04-06 15:05:12 · 141 阅读 · 0 评论 -
等差数列及等比数列求和公式
原创 2019-04-06 14:35:31 · 3571 阅读 · 0 评论 -
二叉搜索树的第k大的节点
按照中序遍历的顺序遍历一颗二叉搜索树,则遍历序列的数值是递增排序的。只需要用中序遍历算法遍历一颗二叉搜索树,我们就很容易找出它的第K大节点。python解法:class solution: def findkmax(self,head,k): global num if not head: return self....原创 2019-04-09 15:37:30 · 319 阅读 · 0 评论 -
二叉树中和为某一值的路径
题目:输入一颗二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。#defination of a Treeclass TreeNode: def __init__(self,value=None,left=None,right=None): self.val=value self.l...原创 2019-04-09 16:20:12 · 87 阅读 · 0 评论 -
python滑动窗口
Kth Largest Element in a Streamclass KthLargest(object): def __init__(self, k, nums): """ :type k: int :type nums: List[int] """ self.pool=nums ...原创 2019-04-09 19:52:48 · 4066 阅读 · 0 评论 -
剑指offer题目整理
1.数组中重复数字给定长度为n数组,数组中所有数字都在0-n-1范围内哈希表时间复杂度太高用元素值作为位置索引的值,与该元素所在位置的值判断相不相等。list[I]==list[list[I]]? list[i]:swap(list[i],list[list[i]])def findCommon(arr): for i in range(len(arr)): wh...原创 2019-07-22 00:07:37 · 376 阅读 · 0 评论 -
python验证二叉搜索树
如果左子树的值小于根的值并且右子树的值大于根的值,并进行递归,成立则为二叉搜索树,否则则不是。class TreeNode: def __init__(self,x): self.val=x self.left=None self.right=Nonedef isValidBST(self,root): min=max=None...原创 2019-06-27 20:10:22 · 853 阅读 · 0 评论 -
实现pow(a,n)----a的n次方
def power(a,n): if n==0: return 1 res,temp=1,a while n: if n&1: res*=temp n>>=1 print("n:",n) temp*=temp return resprint(...原创 2019-07-08 20:13:38 · 892 阅读 · 0 评论 -
python判断链表有环、翻转链表、链表交换相邻元素
#defination of listNodeclass ListNode: def __init__(self,x): self.val=x self.next=Noneclass Solution: def reverselist(self,head): cur,prev=head,None while cu...原创 2019-06-19 20:11:43 · 307 阅读 · 0 评论 -
动态规划求解0-1背包问题
假设山洞里共有a, b, c, d, e这5件宝物(不是5种宝物),它们的重量分别是2,2,6,5,4,它们的价值分别是6,3,5,4,6,现在给你个承重为10的背包, 怎么装背包,可以才能带走最多的财富。#coding=utf-8def package_max_value(arry_weight,arry_values,max_weight): length_index=len(ar...原创 2019-06-08 10:10:54 · 335 阅读 · 0 评论 -
图(邻接矩阵)
逻辑结构分为两部分:V和E集合。因此,用一个一维数组存放图中所有顶点数据;用一个二维数组存放顶点间关系(边或弧)的数据,这个二维数组称为邻接矩阵。邻接矩阵又分为有向图邻接矩阵和无向图邻接矩阵。数据结构中图的存储方式,包括邻接矩阵的存储方式和邻接表的存储方式。深度遍历优先算法动态规划模拟退火算法遗传算法粒子群算法https://www.cnblogs.com/XMU-hcq/p/606...翻译 2019-05-10 17:56:27 · 416 阅读 · 0 评论 -
python----在排序数组中查找数字
二分查找的变形,分别查找左面等于K的值,和右面等于K的值def getNumOfK(data,k): left=0 right=len(data)-1 leftK=getLeftK(data,k,left,right) rightK=getRightK(data,k,left,right) print(leftK) print("right",ri...原创 2019-04-24 16:18:31 · 881 阅读 · 0 评论 -
python3中deque和list的区别
deque是Python中stack和queue的通用形式,也就是既能当做栈使用,又能当做双向队列,list是单向队列.list中有的方法,在deque中都可以使用deque特有的方法有:from collections import dequeL=deque()# L.append(0) #在尾部添加一个元素# L.popleft() #头部返回并删除# L.extendleft(...原创 2019-04-09 20:48:36 · 1593 阅读 · 0 评论 -
python----两个有序链表的合并
第一种方法:非递归#defination of ListNodeclass ListNode: def __init__(self,x): self.val=x self.next=Noneclass Solution: def ListNodeMerge(self,head1,head2): temp=ListNode(0)...原创 2019-03-24 17:38:51 · 160 阅读 · 0 评论 -
掷骰子
棋盘上共有2020个格子,从1开始顺序编号。棋子初始放在第1格,通过扔骰子决定前进格子数,扔出x点就前进x格。骰子有6面,分别对应1至6;质量均匀。当棋子到达2014或超过2014,游戏结束。那么,棋子刚好到达2014的概率与______最接近。2/31/21/32/71/61/7最终游戏停止时停的位置是2014, 2015, 2016, 2017, 2018, 2019,利用f[i...转载 2019-03-30 10:19:17 · 287 阅读 · 0 评论 -
python----简单的洗牌算法
from random import randintdef shuffleCard(array): for i in range(len(array)): x=randint(0,53) array[i],array[x]=array[x],array[i] return arrayif __name__=="__main__": ar...原创 2019-03-20 16:47:34 · 518 阅读 · 0 评论 -
python----将对象放入列表中
类 作为数据模型使用class Student(object): # 初始化中给对象属性赋值 def __init__(self,name , age, phone): self.name = name self.age = age self.phone = phones1 = Student('张三', 22, 110)s2...转载 2019-03-20 14:04:06 · 9522 阅读 · 1 评论 -
剑指offer----重建二叉树及列表基本操作
python实现:python3中list的基本操作pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。list1 = ['Google', 'Runoob', 'Taobao']list1.pop()print ("列表现在为 : ", list1)list1.pop(1)print ("列表现在为 : ", list1)以上实例输出结果如下:列...原创 2019-03-20 13:45:24 · 108 阅读 · 0 评论 -
python递归及非递归实现二叉树的三种遍历
#difination of a binary treeclass Node: def __init__(self,value=None,left=None,right=None): self.value=value self.left=left self.right=rightdef preTraverse(root): # ...原创 2019-03-20 11:10:10 · 376 阅读 · 0 评论 -
剑指offer----二维数组中的查找
有序二维数组,数值从左到右递增,从上到下递增,查找某一个数是否存在思路:首先选取数组中右上角的数字,如果该数字等于要查找的数字,则查找过程结束;如果该数字大于要查找的数字,则剔除该数字所在的列;如果该数字小于要查找的数字,则剔除这个数字所在的行。def findNum(array,target): rows=len(array) cols=len(array[0]) r...原创 2019-03-20 10:41:32 · 77 阅读 · 0 评论 -
python实现----查找数组中连续元素的和等于给定数的子数组
def findSubArraySum(array,target): for i in range(len(array)): temp=0 for j in range(i,len(array)): temp+=array[j] if temp<target: contin...原创 2019-03-20 10:04:40 · 1418 阅读 · 0 评论 -
python中defaultdict和OrderedDict
在使用Python的字典时,我们发现,当输出字典的内容时,输出内容的顺序和我们建立字典时候添加内容的输入顺序不一致。其实,我们使用的是python默认的字典,这种字典是不按顺序存储、输出我们添加在字典中的内容的。要想输出内容的顺序和我们建立字典时候添加内容的输入顺序一致,就要用到有序字典。一、defaultdict使用dict时,如果引用的Key不存在,就会抛出KeyError。如果希望...转载 2019-03-14 23:40:08 · 1313 阅读 · 0 评论 -
python小知识点
python中list的remove()方法作用:remove()函数用于移除列表中某个值的第一个匹配项。示例:aList = [123, 'xyz', 'zara', 'abc', 'xyz']aList.remove('xyz')print(aList)结果: [123, ‘zara’, ‘abc’, ‘xyz’]用处:python实现快排def quick_sort(da...原创 2019-03-04 13:51:06 · 239 阅读 · 0 评论 -
剑指offer----动态规划与贪婪算法
动态规划现在是 编程面试中的热门题目,如果面试题是求一个问题的最优解(通常是最大值或者最小值),而且该问题能够分解为若干个子问题,并且子问题之间还有重叠的更小的子问题,就可以考虑用动态规划来解决这个问题。动态规划是要能够把大问题分解成小问题,分解后的每个小问题也存在最优解。也就是整体问题的最优解是依赖各个子问题的最优解。剪绳子问题给你一根长度为n的绳子,请把绳子剪成m段 (m和n都是整数,n...原创 2019-03-13 21:02:55 · 121 阅读 · 0 评论 -
二分查找、快排、堆排
算法思想不做赘述。二分查找:int binarySearch(int *a,int len,int key){ int left=0,right=len-1; while(left<==right){ int mid=left+(right-left)/2; if(a[mid]==key) return mid; ...原创 2018-11-28 11:19:19 · 231 阅读 · 0 评论 -
编程题:将字符串间多个空格变为1个空格
解法一:char str[]="how are you ";int i=0,j=0;//其中\0表示字符串结束while(str[j]!='\0'){ if(str[j]!=' '){ str[i++]=str[j++]; } else{ str[i++]=str[j++]; while(str[j]=...原创 2018-11-28 10:48:40 · 1256 阅读 · 0 评论 -
简单理解动态规划
高度为10的楼梯,每次走1级或者2级,共有多少种走法?实际是一种分阶段求解策略问题从0到10级台阶的走法数量=0到9级的走法数量+0到8级的走法数量同理可以往下推导,直至F(3)=F(1)+F(2)动态规划的三个概念:最优子结构、边界、状态转移公式如上:F(8)和F(9)是F(10)的最优子结构,因为F(10)=F(8)+F(9)当只有1级台阶或2级台阶的时候,我们可以直接得出结果,因...原创 2019-03-21 10:54:58 · 152 阅读 · 0 评论 -
python----最长不重复子串
def lengthOfLongestSubstring(ss): max_len=0 if len(ss)==0: return max_len str_dict={} for i in range(len(ss)): if ss[i] in str_dict.keys(): start_position=s...原创 2019-03-21 12:35:23 · 724 阅读 · 0 评论