算法分析 [折半,字符串] 2019-02-21

1. 折半

1.1 从一维数组中求一个值/下标

724.寻找数组的中心索引 Find Pivot Index medium
将(总数)减去(左边上一次累加的和)减去(本次的值) = O(N),(如果有2个中心值,只保留左边的中间值)累加值可以对比前一次的,也可以对比当前

747.最大值至少是其他值的两倍 Largest Number At Least Twice of easy
先求最大值下标,再遍历同事略过最大值下标O(N),可以考虑用s++,e--改成O(N/2)

1.2 根据一维数组,处理后返回一维数组

66. 数值加一 Plus One easy
法1. 使用队列记录,并用一个进制位辅助表示是否+1(性能不好)
法2. 可以根据每个数是否为9,如果有一个不为9,都不会导致左位进1,如果全都是9,则数组长度+1,第一个值为1,其余值为0. time: O(n), space: O(1)

1.3 根据二维数组,找规律,处理后返回一维数组

498. 对角线遍历矩阵 Diagonal Traverse medium
难点在找规律,用row和col表示下标,返回的总数是mn个数组,方向就2个{上右{-1, 1}左下{1, -1}}表示,并且出界情况就4种,row<0 || col<0 || row >m-1 || col >n-1,在不同的情况*下改变对应的row和col下标 以及 方向d{0, 1}

54. Spiral Matrix 螺旋矩阵 medium
找规律,用row和col表示下标,返回的总数是mn个数组,并且边界值[上下左右],每次改变方向时要减少对应的边界值-1,在不同的情况*下改变对应的row和col下标,方向4个,{右{0,1},下{1,0},左{0,-1},上{-1,0}},

1.4 查询数据在有序列表中位置 若不存在则预估位置

35. 查询一维数组插入的位置 Search Insert Position easy

折半法要注意 (a + b) /2 容易越界,可以用[a + (a-b)/2]

时间复杂度O(logn),空间复杂度O(1)
折半法
取最后定位的下标low

74. 查询二维有序数组中某个值下标 search-a-2d-matrix easy
时间复杂度O(logn),空间复杂度O(1)
折半法
虽然是二维数组,但是由于是有序的

240. 查询二维无序数组中某个值下标 Search a 2D Matrix II medium
时间复杂度O(m+n),空间复杂度O(1)
找规律
找到第1列的最右值
如果值比目标大,则向下移动行
如果值比目标小,则向左移动列

153. 寻找旋转排序数组中的最小值(数据不重复) Find Minimum in Rotated Sorted Array medium
法1. dp方法 + 折半 同时运用了规则,有序时最小值一定是头一个,无序时遍历
时间复杂度O(logn),空间复杂度O(1)
设置一个min=Integer.MAX_VALUE,每次传入对应的start和end,如果nums[start]<nums[end]说明nums[start]是最小的做比对直接返回,否则设下的一定是无序的,折半,if(nums[start]<=nums[mid])说明最小值在另一边
法2. 折半
时间复杂度O(logn),空间复杂度O(1)
如果nums[mid]>nums[mid+1]则mid+1最小值,如果nums[mid-1]>nums[mid]则mid最小值,否则nums[mid]>nums[0]意味最小值在右边
法3. 折半
时间复杂度O(logn),空间复杂度O(1)
先定位到最小值所在下标,nums[mid]>nums[hi],意味着最小值在右侧->lo=mid+1; 否则在左侧->hi=mid;

33. 寻找旋转排序数组中值的下标(数据不重复) Search in Rotated Sorted Array medium
时间复杂度O(logn),空间复杂度O(1)
先定位到最小值所在下标,由于数组是有序的,那下标则为偏移量,使用折半查找,每次中位数+偏移值

81. 搜索旋转排序数组(数据重复) II Search in Rotated Sorted Array II
todo

1.5 括号问题

20. 有效的括号 valid parentheses easy
使用stack校验

22. 输入括号,输出所有有效配对生成 Generate Parentheses medium
法1. 回溯法 时间复杂度O(),空间复杂度O(n)
使用开关括号的特性,进行回溯,记录一个值用s.length()==n做条件

1.6 快速逼近目标值

744. 寻找比目标字母大的最小字母 Find Smallest Letter Greater Than Target easy
法1. 时间复杂度O(logn) 空间复杂度O(1)
折半法,定位到i为目标值下标,判断i是否为最后一个值,是取第一个值

374. 猜数字大小 Guess Number Higher or Lower easy
法1. 时间复杂度O(logn) 空间复杂度O(1)
折半法,每次取中间值对比大小

375. 猜数字大小II Guess Number Higher or Lower II medium
todo

2. 字符串

2.1 传入字符串,处理逻辑,返回字符串

67. Add Binary 二进制求和 easy
从尾数开始,以长字符串做条件,从尾往头遍历,总和有3,2,1,0类型,设置一个全局增量
890. 查找和替换模式 Find and Replace Pattern
法1. 时间复杂度O(mn),空间复杂度O(mn) ,m是字符串数组个数,n是字符串长度
使用两个Map,一个保存key=匹配模式,value=值一个key=目标值,value=匹配模式,逐个对比

3. 字符串/数组/双指针

3.1 承载水位问题

11. 容器可承载最大水位 Container With Most Water medium
法1. 双指针,时间复杂度O(n),空间复杂度O(1)
宽度总是减少的
每次将水位低的一边缩容,因为低的一方决定了上限

3.2 链表中的慢指针和快指针问题
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,734评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,931评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,133评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,532评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,585评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,462评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,262评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,153评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,587评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,792评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,919评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,635评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,237评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,855评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,983评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,048评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,864评论 2 354