给定两个已排序序列,找出共同的元素
2017-07-12 23:25
176 查看
[java] view
plain copy
<pre name="code" class="java">package com.array;
import java.util.ArrayList;
import java.util.List;
public class CommonItemInTwoSortedArray {
/**
* 题目:给定两个已排序序列,找出共同的元素。 1.定义两个指针分别指向序列的开始。
* 如果指向的两个元素相等,则找到一个相同的元素;如果不等,则将指向较小元素的指针向前移动。 重复执行上面的步骤,直到有一个指针指向序列尾端。
* 2.如果数组大小差得很多,就遍历小的,然后在大的里二分查找
*/
public static void main(String[] args) {
int[] a = { 1, 3, 5, 7 };
int[] b = { 2, 3, 4, 5, 6, 8 };
List<Integer> c = findCommon(a, b);
for (int each : c) {
System.out.print(each + " ");
}
}
public static List<Integer> findCommon(int[] a,int[] b){
List<Integer> commList = new ArrayList<Integer>();
if(!(a!=null&&a.length>0&&b!=null&&b.length>0)){
return commList;
}
int lenA = a.length;
int lenB = b.length;
for(int i = 0 ,j = 0;i<lenA&&j<lenB;){
if(a[i]>b[j]){
j++;//是己经排好序的序列
}else if(a[i]<b[j]){
i++;
}else if(a[i]==b[j]){
commList.add(a[i]);
i++;
j++;
}
}
return commList;
}
}
转载自:http://blog.csdn.net/zjcheer_up/article/details/38339183
plain copy
<pre name="code" class="java">package com.array;
import java.util.ArrayList;
import java.util.List;
public class CommonItemInTwoSortedArray {
/**
* 题目:给定两个已排序序列,找出共同的元素。 1.定义两个指针分别指向序列的开始。
* 如果指向的两个元素相等,则找到一个相同的元素;如果不等,则将指向较小元素的指针向前移动。 重复执行上面的步骤,直到有一个指针指向序列尾端。
* 2.如果数组大小差得很多,就遍历小的,然后在大的里二分查找
*/
public static void main(String[] args) {
int[] a = { 1, 3, 5, 7 };
int[] b = { 2, 3, 4, 5, 6, 8 };
List<Integer> c = findCommon(a, b);
for (int each : c) {
System.out.print(each + " ");
}
}
public static List<Integer> findCommon(int[] a,int[] b){
List<Integer> commList = new ArrayList<Integer>();
if(!(a!=null&&a.length>0&&b!=null&&b.length>0)){
return commList;
}
int lenA = a.length;
int lenB = b.length;
for(int i = 0 ,j = 0;i<lenA&&j<lenB;){
if(a[i]>b[j]){
j++;//是己经排好序的序列
}else if(a[i]<b[j]){
i++;
}else if(a[i]==b[j]){
commList.add(a[i]);
i++;
j++;
}
}
return commList;
}
}
转载自:http://blog.csdn.net/zjcheer_up/article/details/38339183
相关文章推荐
- 给定两个已排序序列,找出共同的元素
- [JAVA]给定两个整形数组,并找出其中共同的元素
- 和为n连续正数序列 & 排序数组中和为给定值的两个数字
- 给定a、b两个文件,各存放50亿个url,每个url各占用64字节,内存限制是4G,如何找出a、b文件共同的url?
- 给定一个排序后的数组,包含n个整数,但这个数组已被旋转过很多次,编写代码找出数组中的某个元素
- 给定两个已经排序好的数组,找到两者所有元素中第 k 大的元素
- 给定一个排序后的数组,包含n个整数,但这个数组已被旋转过多次,找出数组中的某个元素
- 给定一个字符串数组,将其元素按字典序列排序
- 【查找】找出两个数组共同拥有的元素
- 给定一个01串(仅由‘ 0’或‘1’组成的字符串),现在想把这个数字串排序成“非递减”有序序列,请问至少需要多少次交换(任意两个位置交换)
- 找出排序数组中和为给定值的两个数字
- 在一组序列中查找两个元素的和等于给定的值(快排+两端扫描实现)
- 数组A中任意两个相邻元素大小相差1,现给定这样的数组A和目标整数t,找出t在数组A中的位置。
- 程序员面试题目总结--数组(二)【二分查找、找出给定数字出现次数、两个有序整型数组交集、找出数组中唯一的重复元素、判断数组中的数值是否连续相邻】
- LINQ找出重复和不重复的元素及linq OrderBy 方法 两个字段同时排序有关问题
- 两个有序序列的共同元素
- 在给定的数组中找出两个元素和为给定值的所有元素对
- 给定一个值S,在有序数组中找出两个元素A和B,使 A+B = S.
- 给定一个值S,在有序数组中找出两个元素A和B,使 A+B = S.
- 有一个整数数组,请编写一个函数,找出索引m和n,只要将m和n之间的元素排好序,整个数组就是有序的。注意:n-m应该越小越好,也就是说,找出符合条件的最短序列。 给定一个int数组A和数组的大小n,请