百度2014校园招聘笔试题
2017-03-01 12:07
246 查看
百度2014校园招聘笔试题
题目:有这样一个数组A,大小为n,相邻元素差的绝对值都是1,如A={4,5,6,5,6,7,8,9,10,9},现在给定数组A和目标整数t,请找到t在A中的位置。
分析:数组第一个数为A[0], 要找的数为y,设t = abs(y - A[0])。由于每个相邻的数字之差的绝对值为1。故第t个位置之前的数肯定都比y小。因此直接定位到A[t],重新计算t,t = abs(y – A[t]),再重复上述步骤即可。这种算算法主要利用了当前位置的数与查找数的差来实现跨越式搜索。算法效率要比遍历数组的算法要高一些,并且易于实现。
java代码:
c++ 代码:
题目:有这样一个数组A,大小为n,相邻元素差的绝对值都是1,如A={4,5,6,5,6,7,8,9,10,9},现在给定数组A和目标整数t,请找到t在A中的位置。
分析:数组第一个数为A[0], 要找的数为y,设t = abs(y - A[0])。由于每个相邻的数字之差的绝对值为1。故第t个位置之前的数肯定都比y小。因此直接定位到A[t],重新计算t,t = abs(y – A[t]),再重复上述步骤即可。这种算算法主要利用了当前位置的数与查找数的差来实现跨越式搜索。算法效率要比遍历数组的算法要高一些,并且易于实现。
java代码:
package za1; public class EST5 { public static void main(String[] args) { int n=17; int[] A={1,2,3,2,3,4,5,4,5,6,7,6,5,6,7,8,9}; System.out.println(search(A, n, 8)); } private static int search(int[] A, int n, int t) { int temp = Math.abs(t - A[0]); while (temp < n) { if (t == A[temp]) { return temp; } else { temp = temp + Math.abs(t - A[temp]); } } return -1; } }
c++ 代码:
#include <iostream> using namespace std; int search(int *A, int n, int t); int main() { int n = 10; int A[100] = {1,2,3,4,5,6,7,8,9,8}; cout << search(A, n, 5); system("PAUSE"); } int search(int *A, int n, int t) { int temp = abs(t - A[0]); while (temp < n) { if (t == A[temp]) { return temp; } else { temp = temp + abs(t - A[temp]); } } return -1; }
相关文章推荐
- 百度2014校园招聘笔试题(成都站,软件研发岗)——2014.09.21
- 百度 2014 校园招聘 软件研发工程师 笔试题(天津站)
- 百度2014校园招聘-研发工程师笔试题(济南站)
- 百度2014校园招聘-研发工程师笔试题(济南站)
- 百度2014校园招聘研发工程师笔试题+答案
- 百度2014校园招聘笔试题 ——深度学习算法研发工程师.
- 百度2014校园招聘笔试题 ——深度学习算法研发工程师.
- 百度2014校园招聘笔试题
- 百度2014校园招聘-研发工程师笔试题
- 深度学习算法研发工程师笔试题(百度2014校园招聘)
- 百度2014研发类校园招聘笔试题解答
- 百度2014校园招聘笔试题(成都站,软件研发岗)——2014.09.21
- 百度2014研发类校园招聘笔试题解答
- 百度2014校园招聘笔试题
- 百度2014校园招聘笔试题 ——深度学习算法研发工程师.
- 百度2014校园招聘 研发工程师笔试题
- [历年IT笔试题]百度2014校园招聘长沙站笔试题
- 百度2014校园招聘-研发工程师笔试题(济南站)
- 百度2014校园招聘长沙站笔试题
- 百度2014校园招聘长沙站笔试题