算法12.02

来源:互联网 发布:可以赚钱的app软件 编辑:程序博客网 时间:2024/05/20 05:28
1、判断一个数是否为2的N次幂
答:设这个数为n,然后用这个数的二进制和(n-1)的二进制做求与运算,如果所得的结果为0,那么即为二进制数。

2、给定一个数组A(1-100)判断A里面是否有重复元素
答:定义一个hashmap集合,key存放A中的元素值,value存放该元素值出现的次数,假如用count表示,如果count>=2,说明有重复元素。

3、给定一个字符串ab_cd_e,要求字母放前面,下划线放后面。
答:A、把字符串转换为字符数组(toCharArray)
B、定义一个StringBuilder,用来存放排序后字符
C、遍历字符数组,判断如果'a'<Char[i]<'z',就添加到sb中
D、再次遍历字符数组,如果为空,退出,不为空,将元素添加到Sb中
E、将sb转化为字符串(toString())

4、判断一个链表是否是一个环
答:定义两个指针,一个快指针(fast),假如每次移动两步;一个慢指针(slow),假如每次移动一步。判断两个指针能否相遇,如果能,则是一个环。
如果不能,快指针一定先指向NULL,则不成环。
class X{
Boolean isExitsLoop(list head){
list slow=head;
list fast=head;
while((fast&&fast.head)!=null){
slow=slow.next;
fast=fast.next.next;
if(slow==fast){
break;
}
}
return !(fast==null||fast.next==null);
}
}