进军硅谷 数位重组
2016-07-12 15:37
399 查看
数组面试题10:
题目
给定两个数组表示的整数,比如x = 1234={1,2,3,4},y=2410={2,4,1,0},返回第一个整数的重组后的值最接近第二个整数,并且要大于第二个整数。假设两个整数的数组大小相同,并且肯定能够找到符合答案的数,例如输入{1,2,3,4},{2,4,1,0},返回{2,4,1,3}。
题解:
此题可以从y的高位开始,挑一个和该位数字相等或更大的数字,直到到达数组的尾部。为了方便从x里挑出一个与y对应的相等的或更大的数字,需要
1)将x数字进行排序;
2)使用一个一维数组记录x数字的使用情况,用boolean类型来表示。
public static int[] getClosestBigger(int[] x,int[] y)
{
int length = x.length;
int[] res = new int[length];
Arrays.sort(x);
int i = 0,k = 0;
boolean[] used = new boolean[length];
for(int j = 0; j < length; j++)
{
i = 0;
while(i < length && (used[i] || x[i] < y[j])) //得判断这个i的使用情况,是否已经使用过或者是此值比y值要小
i++;
res[k++] = x[i];
used[i] = true;
if(i == length - 1)
continue; //这里是continue,书上写错了
if(x[i] > y[j]) //如果发现,某个数已经比y的某个位置的数要大了,那么直接复制数字后面的值即可
{
for(i = 0; i < length; i++)
{
if(!used[i])
res[k++] = x[i];
}
break;
}
}
return res;
}
题目
给定两个数组表示的整数,比如x = 1234={1,2,3,4},y=2410={2,4,1,0},返回第一个整数的重组后的值最接近第二个整数,并且要大于第二个整数。假设两个整数的数组大小相同,并且肯定能够找到符合答案的数,例如输入{1,2,3,4},{2,4,1,0},返回{2,4,1,3}。
题解:
此题可以从y的高位开始,挑一个和该位数字相等或更大的数字,直到到达数组的尾部。为了方便从x里挑出一个与y对应的相等的或更大的数字,需要
1)将x数字进行排序;
2)使用一个一维数组记录x数字的使用情况,用boolean类型来表示。
public static int[] getClosestBigger(int[] x,int[] y)
{
int length = x.length;
int[] res = new int[length];
Arrays.sort(x);
int i = 0,k = 0;
boolean[] used = new boolean[length];
for(int j = 0; j < length; j++)
{
i = 0;
while(i < length && (used[i] || x[i] < y[j])) //得判断这个i的使用情况,是否已经使用过或者是此值比y值要小
i++;
res[k++] = x[i];
used[i] = true;
if(i == length - 1)
continue; //这里是continue,书上写错了
if(x[i] > y[j]) //如果发现,某个数已经比y的某个位置的数要大了,那么直接复制数字后面的值即可
{
for(i = 0; i < length; i++)
{
if(!used[i])
res[k++] = x[i];
}
break;
}
}
return res;
}
相关文章推荐
- oracle基础一
- TCP option 3, Window Scale
- HDU 1254 推箱子 (BFS + DFS)
- spring 事务详解
- des+base加密解密
- Android Activity的四种launchmode
- mysql sql语句的用法
- angularjs自定义指令的用法
- C语言 二叉树的链式存储实例
- Leetcode 206. Reverse Linked List (Easy) (cpp)
- [转] 四种常见的 POST 提交数据方式
- 简陋hash算法
- Java操纵postgresql
- ECMAScript 6 学习系列课程笔记
- 可左右上下滑动切换图片的界面
- 26javascript基于对象
- 【Android】根据宽度自动调整(参照图片本身尺寸)高度
- [记录]移植驱动完毕后加载时的version magic报错原因以及解决办法(invalid module format)
- UVa11181 Probability|Given DFS+概率
- [Angularjs]ng-file-upload上传文件