可以先想下这两个问题: 1、怎样使用滑动窗口? 2、如何快速的解决字符查重问题? 滑动窗口 可以想象一下有两个指针,一个叫begin,一个叫now 这两个指针就指定了当前正在比较无重复的字符串,当再往后读取一个字符的时候,就需要比较该字符在begin到now之间是否有重复,如果有重复的话,则记录当前 ...
分类:
其他好文 时间:
2019-07-16 22:40:47
阅读次数:
144
题目描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)#-*-coding:utf-8-*-#@Time:2019-07-0515:52#@Author:JayceWong#@ProjectName:job#@FileName:co
分类:
其他好文 时间:
2019-07-06 21:00:22
阅读次数:
165
题目描述 输入一个链表,输出该链表中倒数第k个结点。 思路 设置两个指针 fast 、slow,fast先走k-1步,然后再一起走; 先走的k-1步中,如果遇到fast=nullptr,说明链表长度小于k-1,就没有倒数第k项,那就直接返回空指针; 当fast走到最后一个结点,slow恰好在倒数第k ...
分类:
其他好文 时间:
2019-07-04 14:32:41
阅读次数:
92
class Solution { public List> threeSum(int[] nums) { //这题采用双指针解法。 //首先对数组排序。 //然后固定第一个值i,再定义两个指针,一个low指针指向i的下一个数,一个high指针指向最后一个数 //通过三个数的和判断。因为low和hig... ...
分类:
其他好文 时间:
2019-07-02 21:35:47
阅读次数:
122
输入一个链表,输出该链表中倒数第k个结点。 核心思想: 两个指针,先让第一个指针和第二个指针都指向头结点,然后再让第一个指正走(k-1)步,到达第k个节点。 然后两个指针同时往后移动,当第一个结点到达末尾的时候,第二个结点所在位置就是倒数第k个节点了 时间复杂度O(n),一次遍历即可 调试中出现的b ...
分类:
其他好文 时间:
2019-07-01 10:40:54
阅读次数:
104
快排模板 1. 定义两个指针,左指针从左边界开始,右指针从右边界开始 2. 左指针指向的数小于x,左指针向右移动,直到指向的数大于等于x 3. 右指针指向的数大于x, 右指针向左移动,直到指向的数小于等于x 4. 交换两个数,继续循环 5. 直到两个指针相等 void quick_sort(int ...
分类:
其他好文 时间:
2019-06-29 23:42:34
阅读次数:
182
一、原理 归并排序(Merge sort)是建立在归并操作上的一种有效的排序算法。将已有序的子序列合并,得到完全有序的序列。如下图: 归并过程: 两个指针的元素比较大小,小的元素就会被放入临时列表中,最后的结果就是: 算法步骤: (1)申请临时空间,使其大小为两个已经排序序列之和,该空间用来存放合并 ...
分类:
编程语言 时间:
2019-06-29 12:58:53
阅读次数:
109
题目描述 输入一个链表,输出该链表中倒数第k个结点。 解法 pre 指针走 k-1 步。之后 cur 指针指向 phead,然后两个指针同时走,直至 pre 指针到达尾结点。 即cur与pre始终相距k-1。 当用一个指针遍历链表不能解决问题的时候,可以尝试用两个指针来遍历链表。可以让其中一个指针遍 ...
分类:
其他好文 时间:
2019-06-28 21:01:17
阅读次数:
85
class Solution { public: int maxArea(vector& height) { //双指针法:从最宽的容器开始计算,当更窄的容器盛水量要大于之前容器,那必须比之前容器高,因此可以移动两个指针,直到最窄time O(n),space O(1); int low=0; in... ...
分类:
其他好文 时间:
2019-06-12 11:05:01
阅读次数:
77
题目描述: 给定一个数组arr,和一个数num,请把小于num的数放在数组的左边,等于num的数放在数组的中间,大于num的数放在数组的右边。要求额外空间复杂度O(1),时间复杂度O(N) 解题思路: 使用两个指针:p1,p2 p1 = -1; //左指针,在p1左边并含p1的所有数都<num p2 ...
分类:
其他好文 时间:
2019-06-07 12:36:23
阅读次数:
92