程序员面试金典:另类加法、单词最近距离
2017-07-21 07:44
239 查看
1.另类加法
题目描述请编写一个函数,将两个数字相加。不得使用+或其他算数运算符。
给定两个int A和B。请返回A+B的值
测试样例:
1,2
返回:3
import java.util.*; public class UnusualAdd { public int addAB(int A, int B) { //算法2用递归实现牛客网看到的 if(A==0) return B; else if(B==0) return A; else{ return addAB(A^B,(A&B)<<1); } } }
2.单词最近距离
方法1:记录每次索引,输出min
每次记录两个单词的索引,更新索引的最小值,当文章遍历完成后最后输出minimport java.util.*; public class Distance { public int getDistance(String[] article, int n, String x, String y) { int flagx=-1,flagy=-1; int min=Integer.MAX_VALUE; for(int i=0;i<article.length;i++){ if(article[i].equals(x)){ flagx=i; } if(article[i].equals(y)){ flagy=i; } if(flagx!=-1&&flagy!=-1){ min=getMin(min,Math.abs(flagx-flagy)); } } return min; } public int getMin(int a,int b){ return a<b? a:b; } }
方法2:利用两个动态数组来记录索引值
import java.util.*; public class Distance { public int getDistance(String[] article, int n, String x, String y) { int min=Integer.MAX_VALUE; ArrayList<Integer> listx=new ArrayList<Integer>(); ArrayList<Integer> listy=new ArrayList<Integer>(); for(int i=0;i<n;i++){ if(article[i].equals(x)) listx.add(i); else if(article[i].equals(y)){ listy.add(i); } } for(int i=0;i<listx.size();i++){ for(int j=0;j<listy.size();j++){ min=getMin(min,Math.abs(listx.get(i)-listy.get(j))); } } return min; } public int getMin(int a,int b){ return a>b? b:a; } }
相关文章推荐
- 程序员面试金典——单词最近距离
- 单词最近距离
- 程序员面试金典——解题总结: 9.18高难度题 18.5有个内含单词的超大文本文件,给定任意两个单词,找出在这个文件中这两个单词的最短距离
- 《Cracking the Coding Interview程序员面试金典》----单词最近距离
- 单词最近距离
- [CTCI] 单词最近距离
- 单词的最近距离
- [转] 最近点对距离问题
- 点到圆的最近距离公式推导
- 【K-D树 求最近最远距离】BZOJ 1941 [Sdoi2010]Hide and Seek
- 求空间中线段上到已知直线距离最近的点
- 最近距离 已知平面上的若干点的位置,存入一个List中。现在需要计算所有这些点中,距离最近的两个点间的最小距离
- 找出附近距离自己最近的店家
- 最近点对及距离
- 找出距离最近的三个点
- 空间想象能力挑战:立方体相邻面两对角线的最近距离?
- [LeetCode] 244. Shortest Word Distance II 最短单词距离 II
- Java 获取距离最近一段时间的时间点
- [南阳OJ-No.24]素数距离问题|现在给出你一些数,要求你写出一个程序,输出这些整数相邻最近的素数,并输出其相距长度。如果左右有等距离长度素数,则输出左侧的值及相应距离。 如果输入的整数本身就是素
- 三维凸包求内部一点到表面的最近距离(HDU4266)