一、算法简介指针主要用于遍历数组,两个指针指向不同元素,从而协同完成任务。也可以延伸到多个数组多个指针。若两个指针指向同一数组,遍历方向相同且不会相交,则也称为滑动窗口(两个指针包围区域即为当前窗口),经常用于区间搜索。若两个指针指向同一数组,但是遍历方向相反,则可以用来进行搜索,待搜索数组往往是排好序。二、指针小知识对于C++ 语言,指针还可以玩出很多新花样。一些常见关于指针
int hoare_partition(int arr[],int start,int end){ int pivot = arr[start]; int i = start; int j = end; while(true){ while(i<j && arr[i]<=pivot) i++;
转载 2023-12-15 08:39:11
43阅读
一、什么是指针算法?严格来说,指针只能说是是算法中一种技巧。指针指的是在遍历对象过程中,不是普通使用单个指针进行访问,而是使用两个相同方向(快慢指针)或者相反方向(对撞指针指针进行扫描,从而达到相应目的。二、指针算法适用范围常用在数组遍历中,我们使用两个指针进行操作,遍历完整个数组来实现我们目的。一般能用指针算法解决问题,都可以暴力解法解决,常用于单调场景。所以
在Java编程中,指针是一种常见算法技术,常用于处理数组、链表等数据结构,以提高代码效率。接下来,我们将讨论如何在Java中有效使用指针,帮助开发者们掌握该技术精髓。 ### 问题背景 在实际开发中,用户常常会遇到需要处理大量数据场景。例如,在进行数组去重、滑动窗口问题、或是查找特定条件元素位置时,简单遍历方法会导致时间复杂度较高,从而影响程序运行效率。因此,采用指针方式
原创 6月前
6阅读
1.双向指针在链表中应用所谓指针,指的是在遍历对象过程中,不是使用单个指针进行访问,而是使用两个相同方向或者相反方向指针进行遍历,从而达到相应目的。指针使用可以降低程序时间复杂度或者空间复杂度,总之是一种有效解决问题方案。       (注:这里所说指针,并不是C/C++中指针概念,而是指索引,游标或指针,可迭代对象等) 
转载 2023-08-30 19:58:16
85阅读
算法第二次记录,首先是学习指针,分为左右指针和快慢指针,名称不同,用法也不同。左右指针左右指针是指指针中一个指针在数组最左侧,而另一个在最右侧。通过判断,可以分别让两侧指针向中间移动,以求解问题。快慢指针快慢指针是指一个指针快,一个指针走得慢,类似龟兔赛跑。简单介绍以下两个指针可以使用案例 ①左右指针:可以用来反转字符串public class LeftRight { pu
转载 2024-01-06 09:19:13
27阅读
struct MockFile { [...] void writef(alias fmt, A...)(A args) { // 函数要求,弃用了`环境`
原创 2022-03-07 17:41:37
106阅读
同向指针 移动速度相同,一般同向移动 指针再向后移动一位,第二个指针再从第一个指针位置向后遍历整个数组,以此类推。(有点像选择排序过程)时间复杂度:n..
第二章 指针2.1 介绍算法思想 指针主要用于遍历数组,两个指针指向不同元素,从而协同完成任务。也可以延伸到多个数组多个指针。若两个指针指向同一数组,遍历方向相同且不会相交,则也称为滑动窗口(两个指针包围区域即为当前窗口),经常用于区间搜索。若两个指针指向同一数组,但是遍历方向相反,则可以用来进行搜索,待搜索数组往往是排好序。2.2 Two Sum问题167. 两数之和 II -
大家好,今后我会在博客分享自己一些算法解题思路和一些有趣推理题,欢迎有兴趣朋友们一起来学习呀指针是一种思想或一种技巧并不是特别具体算法。 具体就是两个变量动态存储两个结点,来方便我们进行一些操作。通常用在线性数据结构中。解决指针问题四种常用思想:1、普通指针(two sum),一般两个for循环,外层i和内层j可以认为是普通指针; 2、左右指针(二分搜索):需要两个指针,一个指
转载 2023-07-22 16:26:22
240阅读
iOS开发过程中,属性定义往往与retain, assign, copy有关,我想大家都很熟悉了,在此我也不介绍,网上有很多相关文章。 现在我们看看iOS5中新关键字strong, weak, unsafe_unretained. 可以与以前关键字对应学习strong与retain类似,weak与unsafe_unretained功能差不多(有点区别,等下会介绍,这两个新 关键字
转载 2024-07-17 18:20:42
47阅读
docker作用:1、简化配置这是Docker初始目的,虚拟机VM最大好处是基于你应用配置能够无缝运行在任何平台上。Docker提供同样类似VM能力,但是没有任何副作用,它能让你将环境和配置放入代码然后部署,同样Docker配置能够在各种环境中使用,这实际是将应用环境和底层环境实现了解耦。2、代码管道化管理能够对代码以流式pipeline管道化进行管理,从开发机器到生产环境机器这个流
指针可以指向基本类型,也可以指向复合类型,因此也可以指向另外一个指针变量,称为指向指针指针
转载 2010-03-12 02:07:00
117阅读
2评论
1.相向指针Reverse型:翻转字符串、判断回文串TwoSum型:两数之和、三数之和Partition型:快速排序、颜色排序框架pythondefisPalindrome(s):一左一右两个指针(索引),分别从中间开始移动left,right=0,len(s)1left一定要小于rightwhileleft<right:ifsleft!=sright:returnFalseleft+=1lef
原创 2022-06-26 22:50:20
296阅读
leetcode209】长度最小子数组public class MinSubArrayLen { public int minSubArrayLen(int s, int[] nums) { if (nums == null || nums.length == 0) { return 0; } int minl...
原创 2021-06-11 21:50:20
167阅读
相向而行 反转字符串 https://leetcode-cn.com/problems/reverse-string/solution/shuang-zhi-zhen-by-zhang-bo-b-7u4y/ class Solution { public: void reverseString(ve ...
转载 2021-11-04 11:39:00
216阅读
2评论
1.判断子序列原题给定字符串 s 和 t ,判断 s 是否为 t 子序列。字符串一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成新字符串。(例如,"ace"是"abcde"一个子序列,而"aec"不是)。进阶:如果有大量输入 S,称作 S1, S2, ... , Sk 其中 k
原创 2024-03-11 11:12:14
0阅读
指针 本文是面试经典 150 题指针问题详细解读。 在LeetCode中,指针问题通常是指使用两个指针在一个序列中向相反方向移动,以协同完成某种操作或达成某种条件问题。 在解决指针问题时,一般要满足以下条件: 序列是有序。 需要在序列中寻找或比较元素。 操作需要在 O(n) 时间复杂度内完成。 指针问题解法一般有两种: 两个指针从两端开始向中间移动。
原创 2023-06-15 09:57:08
145阅读
【题目描述】 给定一个长度为 n 整数序列,请找出最长不包含重复连续区间,输出它长度。 【输入格式】 第一行包含整数 n。 第二行包含 n 个整数(均在 0∼105 范围内),表示整数序列。 【输出格式】 共一行,包含一个整数,表示最长不包含重复连续区间长度。 【数据范围】 1 ...
转载 2021-10-16 19:57:00
122阅读
2评论
指针一、介绍指针指的是在遍历对象过程中,使用两个指针进行相同或相反方向扫描,从而达到相应目的。此处指针并非C语言中指针,而是索引。指针算法是一个遍历对象过程,因而其常应用于数组、链表指针算法最重要目的是,将较高时间复杂度(O(n^2))降为线性时间复杂度(O(n)),是一种对暴力搜索算法优化。二、场景引入问题:给定一个升序排列数组和一个目标值,从该数组中找出两个元素,
转载 2023-07-12 19:24:25
139阅读
  • 1
  • 2
  • 3
  • 4
  • 5