题目: 解答: 默认升序(降序也只是改一点代码,不影响) 原理:如果左侧最大值大于中间的最小值,则一定会被中间序列包括;同理,如果右侧最小值大于中间的最大值,则一定会被中间序列包括。 一遍遍历 + 两个指针(两次扫描可一次遍历完成) 1、从前向后扫描数组,判断当前array[i]是否比max小,是则 ...
分类:
编程语言 时间:
2020-05-05 20:22:41
阅读次数:
59
先分别排序,搞两个指针,从头开始对两个数组进行扫描,如果一个小一个大,就让小的往后走。如果相等那就存到结果数组中,然后两个指针同时往后走,循环到有一个遍历完就可以结束。 ...
分类:
编程语言 时间:
2020-05-05 18:12:05
阅读次数:
68
用两个指针就行,一个指针i初始时指向头元素,另一个j指向下标为1的元素(所以说,当长度为1时单独判断,长度为1就返回1) 之后,如果i下标的元素等于j下标的元素,j++,假如到了i和j代表的元素不等时,说明i,j中间这些都是重复元素,都是等于nums[i]的元素,此时,nums[i+1]=nums[ ...
分类:
编程语言 时间:
2020-05-04 14:59:43
阅读次数:
59
1. List 容器的基本概念 1. list 是一个双向链表容器,可高效的进行插入删除元素,他的原理在于每个元素都有两个指针来记录前后两个元素的地址,像火车车厢一样,list 中各个元素在物理存储单元上非连续,是通过指针相连在一起的。 2. 相较于vector的连续线性空间,list会显得复杂许多 ...
分类:
其他好文 时间:
2020-05-04 00:52:48
阅读次数:
52
题目: 解法: 设置两个指针,一前以后进行扫描判断。 1 class Solution { 2 public: 3 4 //判断是否为合法,即是否为数字和字母 5 bool isAlphanumeric(char &c) 6 { 7 if(c >= 'A' && c <= 'Z') 8 { 9 c ...
分类:
其他好文 时间:
2020-05-03 20:28:39
阅读次数:
65
暴力求解 优化 解题思路 准备两个指针,一个指向开头,一个指向结尾,此时容器的底最大的 随着指针向内移动,会造成容器的底变小,在这种情况下想让容器盛水变多,就只能在容器的嗷下功夫。 那我们如何决策哪个指针移动呢?我们能够发现不管是左指针向右移一位,还是右指针想左移一位,容器的底都是一样的,都比原来减 ...
分类:
其他好文 时间:
2020-05-02 18:37:12
阅读次数:
60
本文总结了常见高频的关于链表的算法考察。 1.如何找到链表的中间元素? 我们可以采用快慢指针的思想,使用步长为1的慢指针和步长为2的快指针,当快指针抵达链表末尾时,此时慢指针指向的即为中点位置。 我们还可以采用递归的方式,当递归到最末尾的时候,我们已经能知道链表的长度,此时当递归回去的时候,判断当前 ...
分类:
编程语言 时间:
2020-05-02 11:27:02
阅读次数:
52
# 解题思路 对于无重复最长子串这类问题,通常可以采用两种解决方案: (1)滑动窗口法,使用首尾两个指针来确定字符串范围 (2)用数组实现hashmap法 下面对两种解法分别进行探讨。 # 滑动窗口法 对于滑动窗口法需要设置两个指针,在对字符数组进行遍历的过程中每移动一个字符就要使用一次遍历判断一次 ...
分类:
其他好文 时间:
2020-05-02 10:06:51
阅读次数:
48
题目: 删除链表的倒数第N个节点:给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。说明: 给定的 n 保证是有效的。 思路: 这道题以前见过,好像是一个叫睿企还是睿智的科技公司的笔试题。使用两个指针,这两个指针的间隔是n。 程序: # Definition for singly-l ...
分类:
编程语言 时间:
2020-05-01 01:05:32
阅读次数:
70
之前说了单链表,下面来说一下双向链表。和单链表不同,双向链表中的每个节点都有两个指针,分别用来指向它的前驱和后继。所以从双向链表中的 任意一个节点开始,都可以很方便地访问到他的钱去纪念和后继结点。下面给张图来展示一下什么是双向链表 这就是双向链表,每个结点都有两个指针,其中表头结点的前驱指针prio ...
分类:
其他好文 时间:
2020-04-30 23:32:47
阅读次数:
107