码迷,mamicode.com
首页 > 其他好文 > 详细

two pointers思想 ---- 利用两个i, j两个下标,同时对序列进行扫描,以O(n)复杂度解决问题的一种思想

时间:2020-01-20 19:16:01      阅读:71      评论:0      收藏:0      [点我收藏+]

标签:data   spl   img   inf   dex   alt   idt   代码   code   

two pointers思想 ---- 利用两个i, j两个下标,同时对序列进行扫描,以O(n)复杂度解决问题的一种思想, 如果能用这种思想解决问题,那么会大大降低程序的复杂度。

两个利用这个思想的例子:

1.

技术图片

 

分析:

技术图片

 代码:

 1 while (i < j){
 2         if (a[i] + a[j] == m){
 3             printf("%d %d\n", i, j);
 4             i++;
 5             j++;
 6         }
 7         else if (a[i] + a[j] < m){
 8             i++;
 9         }
10         else{
11             j++;
12         }
13     }

 

2. 技术图片

思路:

技术图片

代码:

 1 int merge(int A[], int B[], int C[], int n, int m){
 2     int i = 0, j = 0, index = 0;        // i指向A[0], j指向B[0]
 3     while (i < n && j < m){
 4         if (A[i] < B[j]){
 5             C[index++] = A[i++];
 6         }
 7         else if (A[i] > B[j]){
 8             C[index++] = B[j++];
 9         }
10         else{
11             C[index++] = A[i++];
12             j++;
13         }
14     }
15 
16     while (i < n)
17         C[index++] = A[i++];        // 将序列A的剩余元素加入序列C
18     while (j < m)
19         C[index++] = B[j++];        // 将序列B的剩余元素加入序列C
20 
21     return index;
22 }

 

 

 

 

 

 


two pointers思想 ---- 利用两个i, j两个下标,同时对序列进行扫描,以O(n)复杂度解决问题的一种思想

标签:data   spl   img   inf   dex   alt   idt   代码   code   

原文地址:https://www.cnblogs.com/hi3254014978/p/12218844.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!