自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

CarpeDiem

Seize the day.

  • 博客(142)
  • 收藏
  • 关注

原创 Leetcode20. Valid Parentheses | easy | stack

括号匹配优先想到栈,因为题目说了如果能闭合一定是按顺序的,所以只需要考虑当前元素和栈顶元素匹配与否。时间复杂度O(n),空间复杂度O(n)

2022-09-26 08:48:26 163 1

原创 Leetcode76. Minimum Window Substring | Hard | Sliding Window

在s里匹配的时候,很容易想到最暴力的做法,就是n:s.length()为开始,然后往后找直到找全t里的所有字母。此时是没必要往后继续的,因为题目要的是最短。假如s[0]是t的字母,那么此时从n=1开始,t的字母就是不全的,需要继续向后直到找全。这题的切入点其实就是s[0]的两种情况,因为题目要求是找最小,所以容易想到肯定是左右没用的字母都划掉才是我们要的答案。因为t的字母在s里的顺序是没有要求的,相当于是对单个字符查验,想到这里就很容易想到要用map存(因为题目也说了可能t会有重复的字母)。

2022-09-20 13:11:09 177

原创 Leetcode14. Longest Common Prefix | StringBuilder

kmp主要是针对子串匹配(位置是任意的),但是本题是最长连续前缀,位置其实是确定的,就是从第一位开始,并且因为是连续的,只要一直往后找,有一位不存在直接break即可,不需要考虑之后位置的情况。可以做一个小优化,就是把第一个元素当作ans,每次首先判断ans是否==当前元素,可以省去相同时逐位判断的功夫。不过可以用.concat把两个string拼接在一起生成新String,可以用String.valueOf(xxx.charAt(xx))的方式拼接,但是这样会非常麻烦。时间复杂度 o(n)......

2022-08-04 23:53:29 172

原创 Leetcode13. Roman to Integer | 字符串

根据字符和数字的对应关系求和,减法的6种情况需要考虑i和i+1两位字符。最开始考虑了哈希表,但开始写之后发现其实不用那么麻烦。查了查发现java也有switch语句,直接switch语句就可以。需要注意的是break是一定要写的,而且break不影响外层的while循环。一共有7+6,13种情况。时间复杂度:O(n)空间复杂度:O(1)...

2022-08-04 01:18:41 100

原创 Leetcode49. Group Anagrams|哈希表

但真的开始写代码发现,如果是(string, int)这样的哈希表,一个Key只能存一个下标。查了资料之后发现原来哈希表的值可以是list,这样就可以存储多个下标了。如果是c++可以写一个(string, int)的结构体存储序号,并定义一个排序方式,但java没有结构体。这里是因为题目要求(返回值规定)是List>,所以不能直接return .values(),前面要转换一下。最开始的想法:先复制一个strs,排序,从短到长字典序排,然后用.equal判断。......

2022-08-04 00:22:08 170

原创 Leetcode48. Rotate Image | 找规律 | 模拟

不占用额外空间完成旋转,中间一定有规律可循,它的改变方式一定是跟交换值类似,tmp存一个,其他的一串有联系,可以通过坐标±或其他方式求得,一个一个替换进去,最后一个填进去tmp存储的值。多推几个样例可以发现对[i,j]位置的数字,每次旋转,它实际是关联了另外3个相对位置一样的值[j,n-1-i][n-1-i,n-1-j][n-1-j][i]。需要注意的是,替换实际上是从外到内,“一圈一圈“进行的,完成第i行实际是完成了第i个圈。所以循环内侧j的范围是[0+i,n-1-i]。时间复杂度O(n^2)...

2022-08-01 20:39:18 99

原创 Leetcode46. Permutations | 模拟 | 递归 | 记忆化搜索

Java这里要注意List和Array的互相转化,如果只是直接用Arrays.toList()出来的是一个伪List,是固定的没办法增添元素,查了半天应该是没有什么捷径,一定要转换就是得遍历一遍。所以从第1个数字开始(它本身),依次保留i个数字情况下的全排列,对第i+1个数字,它的全排列就是i个数字全排列的每种情况依次在每个位置插入第i+1个数字。n个数的全排列,其实是在n-1个数字的全排列基础上加上第n个数。两种方法的本质其实是一样的,递归也是将问题转化为n-1个数字的子问题+第n个数字的插入。...

2022-08-01 19:34:38 109

原创 Leetcode36. Valid Sudoku | 模拟

3*(行/3)+列/3。这里最开始并没有想到,看了题解才意识到可以这样做。1.char到int的转换,-'0’即可。很多题解是-'1’或者-‘0’-1,之所以如此是因为最开始开的是9。2.board[i][j]isadigit1-9or‘.’不用考虑非法(1-9以外)的情况。判定条件一行/列/3*3九宫格中同一个数字只能出现一次。3.c++初始化数组可以直接={0},这样就不用写三遍memset了。9的数组,实际这个操作-'0’就可以,数组开成10。时间复杂度O(n2)空间复杂度O(n2)...

2022-07-31 21:20:38 184

原创 Leetcode34. Find First and Last Position of Element in Sorted Array | Binary Search

这里我们的目标是找到左端点,而如果上面两条对mid的判断都不符合,就说明我们位于目标区间的中部,即左端点在我们的左边,所以向左挪动。但一旦我们确定了策略是找左右端点,c情况就完全不会对我们造成任何困扰,我们只专注于mid是否符合端点的条件(ab的条件比c好找多了)。给定一个可能有重复元素的非递减数列,要求找出给定元素第一次出现和最后一次出现的位置(区间),若不存在则返回{-1,-1}。33题不需要特判右边是题目特点决定的,实际上做的时候两边端点的特殊情况都要考虑。=的情况属于对mid的判断的部分。...

2022-07-27 22:53:20 174

原创 Leetcode33. Search in Rotated Sorted Array | Binary Search

关键在于原本的数列是一个递增数列,所以[k,n-1]里所有的元素都大于[0,k-1]。但其实上面的很多条件都是可以简化的,比如[left,right]作为起始区间,其实没必要再判断nums[right]nums[left]是否符合target_value的大小条件了,加上二者是互斥的,target_value不在第一个区间它就一定在第二个区间,所以直接用else就可以。它的原理是很好理解的,如果当前的区间是左端点大于右端点的,那它一定是两个数列都横跨了,我们要找的界限一定在这里。......

2022-07-27 20:13:57 184

原创 Leetcode31. Next Permutation | Binary Search, Two Pointer

若这个递减子序列的首个元素为n,n-1就是下一轮要变动数位的元素。2.通过二分查找,找到该递减子序列里所有大于n-1的元素中最小的那个,下标记录为ans。3.ans与原n-1互换。4.使用双指针对该子序列进行颠倒。......

2022-07-25 21:52:38 320

原创 Leetcode11. Container With Most Water | Two Pointer

代码】Leetcode11.ContainerWithMostWater|TwoPointer。

2022-07-23 19:08:46 178

原创 Leetcode283. Move Zeroes | Two Pointers

代码】Leetcode283.MoveZeroes|TwoPointers。

2022-07-22 22:58:24 82

原创 Leetcode169. Majority Element | Moore Voting

代码】Leetcode169.MajorityElement|MooreVoting。

2022-07-22 22:41:02 133

原创 Leetcode121. Best Time to Buy and Sell Stock | Two Pointers, Stack, DP

代码】Leetcode121.BestTimetoBuyandSellStock。

2022-07-22 01:08:21 1347

原创 Leetcode136. Single Number | XOR

代码】Leetcode136.SingleNumber|XOR。

2022-07-21 22:43:36 132

原创 Leetcode35. Search Insert Position | Binary Search

题目要求用O(logn)的方法解决,很容易想到二分查找(加上题目本来给的就是有序序列)。这里查找的不是目标元素,而是第一个大于或等于目标元素的元素,所以把二分模板里大于和等于的部分合并即可。对于元素不在数组里(数组最大数字小于目标元素)的情况,检查一下ans即可(也就是二分查找有没有找到东西),没有的话它的位置就应该是nums.size()。第一遍直接扫过去复杂度是O(n),不符合题目要求。给定单调递增序列,要求给出数字target的位置或它应该在的位置。时间复杂度O(logn)...

2022-07-20 22:29:35 96

原创 Leetcode1. two sum | hash map

给定数组,寻找数组中和为给定值的两个元素。数组是无序的,每个元素只能使用一次,有且仅有一组答案。时间复杂度为O(n),也就是最开始遍历放进去的那一遍。空间复杂度O(n),nums有多少元素就需要多大空间。查找效率为O(1)。...

2022-07-20 21:58:58 180

原创 Leetcode121.买卖股票的最佳时机|DP

动态规划。最开始从固定买入的日期考虑,看着像二维,但想不出怎么分解子问题。后面从固定卖出的日期考虑,就可以分解子问题了。这种数组里的dp可能还是要抓“一定会结束”这个点。从固定卖出的日期开始写,不难发现,以5为例子,它要么是和上一个数求差,要么是和之前所有数求(而之前所有数中最大的差是一个子问题,它已经在上一个数那一步里得到了解决)。和之前所有数求差为什么可以借助上一个数的minus[]呢?因为5和前面所有数的最大差其实就是,1和前面嗦有数的最大的差+1和5的差。状态转移方程就得到了。minus

2022-07-05 18:55:28 83

原创 Leetcode53.最大子数组和|DP

动态规划,关键是意识到要“分解“,对于一长串数组求”子XXX“的问题,要记得:1.总要结束,2.总要以其中一个元素结束。这样就可以枚举以每一个数作结束的情况。对第一个例子分析,挨个看以每个数结束的情况,并把以它结束时候的最大和用maxsum表示:-2,就一个元素,是他自己,maxsum[0]=-2;1,对1来说,如果和-2连接,是-1,如果就自己,是1,所以maxsum[1]=max(-1, 1);-3,从这里就可以意识到,分析-3,没必要从-2开始看,因为,如果-3要链接前面的数字,那必然要链接1

2022-07-05 18:25:38 69

原创 什么是优化问题 Optimization Problem

Optimization problem: Maximizing or minimizing some function relative to some set, often representing a range of choices available in a certain situation. The function allows comparison of the different choices for determining which might be “best.”An opt

2020-10-11 20:52:00 4348

原创 studio初尝试——分析餐馆数据(一)

引入数据选择sample中的restaurant customer data拖拽到幕布,右键visualize。以ambiance(反应是独自前来还是与家人/朋友前来)为例,可以看到右侧显示出的信息。统计与可视化下面具体的看一下statistics与visualizations中分别包含了哪些信息。Unique Values 3 #共有三种取值Missing Values 6 # 有六处缺失,体现为nullFeature Type String Feature # 数据类型string

2020-08-09 17:41:50 192

原创 ubuntu下sqlite3的安装

参考博客:传送1 传送2

2020-07-07 09:18:54 139

原创 RSA加密算法是怎样工作的?

什么是RSA?RSA is an asymmetric system , which means that a key pair will be generated (we will see how soon) , a public key and a private key , obviously you keep your private key secure and pass aroun...

2020-03-17 22:17:06 516

原创 数值计算方法1.1~1.3

绝对误差 e绝对误差限 ε相对误差(这里xx应该是x*,Mathpix识别的有问题)因为实际中精确值是不知道的,所以往往用下面的式子代替。相对误差限(分子上的q应该是 ε)补充两个结论绝对误差限是精确值末位的半个单位下图(e(x)应该是er(x))...

2020-03-15 16:12:06 374 1

原创 PyTask 17 公约数的个数

暴力也行。新知识点:两个数公约数的个数等于他们最大约数的约数的个数。cnt = 1while b: a,b = b,a%b for i in range(1, a): if (a % i == 0): cnt += 1print(cnt)...

2020-03-15 00:35:17 147

原创 ACWings1219 移动距离

题目:传送门很容易想到要分奇偶讨论,但是对x的处理也要分下类,这个一开始忘记了。最初取的都是不太特殊的点,比如6/8会出现0行的情况,所以+1,但是如果有特殊情况比如16/8,其实刚刚好不需要额外补1。#include<iostream>#include<cstdio>#include<cstring>using namespace std;in...

2020-03-14 23:49:19 170

原创 PyTip Task16 人民币金额转换 |模拟 |超多细节

最近做的题里A的最感动的一道……我要哭了。对0的处理,切成两半后连接点处的0,还有连续0的处理。负数!编码!# a = '9999999'm = str(a)totalans = ''if(m[0] == '-'): m = m[1:] totalans += u'负' p = len(m)dict1 = {'0':u'零','1':u'壹'...

2020-03-14 00:53:12 293

原创 UVA 10189 Mineweeper

题目:传送门看到这种矩阵以为要搜索的,写了想起来只是在查探自己周围的状况,没有下一步的转移,所以不是搜索。把数组从1开始用可以避免边界问题的麻烦。注意格式,本题首先需要一个field提示,然后每个矩阵之间需要空行(但最后一个矩阵不需要)。所以先输出空行再输出矩阵。#include<iostream>#include<cstdio>#include<cs...

2020-03-13 17:48:37 191

原创 PyTip Task15 | 大小写转换

给定一个字符串a, 将a中的大写字母 转换成小写,其它字符不变,并输出。例如:a="aaaaaabbbDDDDD"则输出:aaaaaabbbddddd方法一:内置函数print(a.lower())方法二:手动补充ord()函数:The ord() method returns an integer representing Unicode code point for the gi...

2020-03-13 01:35:25 251

原创 UVA100 3n+1 problem | 模拟

啊……是我孤陋寡闻了。真的认真算了好久,也打了表,想是不是每100个记录一个最大值然后对比。最后发现直接摸你就好了2333数据量没有很大。//// main.cpp// time_jianfa//// Created by Li Haoyang on 2020/3/9.// Copyright © 2020 Li Haoyang. All rights reserved....

2020-03-11 23:08:50 102

原创 Pytip task13&task14 | python内置函数bin()进行二进制转化与py之禅

task12The bin() function returns the binary representation of an int object as a string.It takes an integer in decimal format and converts it to binary format.The string count() method returns the ...

2020-03-11 22:10:02 131

原创 pandas对重复日期取均值合并再放回dataframe里

参考:pandas找出重复行后取均值并合并import pandas as pdimport numpy as npimport matplotlib as mpl%matplotlib inlinefrom ggplot import *theme_bw()ggplot麻烦的很,内部用的是老pandas的东西,比如sort之类的,还有一个date啥啥也有问题。如果要解决只能手动...

2020-03-11 20:04:16 3749

原创 pandas求协方差、相关系数、显著性检验

通过列索引值筛选内容的写法。pcfr = pd.read_excel('hair.xlsx')df = pcfr# '=='后面替换品牌名字即可m = df[df['product_title']=='remington ac2015 t|studio salon collection pearl ceramic hair dryer, deep purple']情感分析函数。def...

2020-03-11 19:38:59 2528

原创 pandas根据日期求某一列的年平均值

对于这种,读进来日期不是日期格式,并且有时候一天有很多条数据,一天没有数据的情况,根据年份合并求star_rating这一栏的平均值。读入数据并删除无关列pcfr = pd.read_excel('microwave.xlsx')df = pcfr[['review_date','star_rating']]df.head(3)会警告,无视之。df['review_date'] =...

2020-03-11 18:58:16 10644 2

原创 读入数据+使用snownlp进行情感分析

读入数据tsv与csv读入相同,只是加一个sep=’\t’,指定分隔符就好。(csv以’,'分割)pcfr = pd.read_csv('pacifier.tsv', sep='\t', dtype={'review_body':str, 'review_headline':str})dataframe按列名提取,注意是两层[]df = pcfra = df[['review_head...

2020-03-11 18:15:53 8441

原创 Pytip task11&task12 | 乘积尾0与最后一个非零数字的奇偶性

Task11def getzeronum(L): num2 = 0 num5 = 0 for num in L: while num%2 == 0: num/=2 num2+=1 while num%5 == 0: num/=5 num5+=1...

2020-03-10 22:23:16 106

原创 打卡第一天 模拟退火

找个地方帮自己mark一下⭕️打卡我昨天计划在今天看遗传算法,但是翻开黄书发现,现代优化算法这一章节里,模拟退火排在遗传的前面。所以今天就先学模拟退火了。在这之前要提一下什么是现代优化算法,这个问题会涉及到复杂度、什么是nph问题、局部最优与全剧最优,我把查的资料都整理到了一起,在截图里面。了解完了之后我去看黄书里面模拟退火的部分,之前一直很好奇为什么这个算法名字这么酷。看了才知道是把材料学...

2020-02-19 21:47:37 205

原创 Almost Identity Permutations | 错排 | 数学

读题的时候要仔细一点,n个数字,问在有至少(n-k)个数字序号与值对应的情况下,有多少种不同的排列。换言之就是有n个数字,求从k到1的错排(前面再乘一个组合数)。要注意是至少……所以后面对k讨论的时候每种情况都是+。这里涉及到一个全错位排列的知识点,也就是所有的数字都不在原来的位置。比较小的几个错排数:D1= 0,D2= 1,D3=2,D4= 9,D5= 44,D6= 265,D7= 185...

2019-11-15 09:28:17 422

原创 树状数组

不是2的幂次的情况一直理解的是错误的,今天跟着程序一点点debug想了好久终于想明白了。像第二张图,就是因为不是以2的幂次个叶子结点的满二叉树作为基准才会出错。因为树状数组是二进制操作的,所以只有上面两个条件同时满足那些操作才适配(满,并且叶子是2的幂次)。...

2019-10-28 20:40:26 98

空空如也

空空如也

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

TA关注的人

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