在有空串的字符串中查找和优化a的n次幂算法

题目三:在有空字符串的有序字符串数组中查找 :有个排序后的字符串数组,其中散布着一些空字符串,编写一个方法,找出给定字符串(肯定不是空字符串)的索引

思路:看到数组有序,首先应该要想到用二分法来去做,框架要先搭建出来,begin、mid、

end、以及mid>要找的元素,end=mid-1,mid<时,begin=mid+1.

其次,考虑到时字符串,在等于空的时候,用equals方法,在比较的大小的时候,用

compareTo方法。


代码:

package LanQiaoKnowledge;

public class 在有空字符串的有序数组中查找 {

//利用二分法的思想

static int indexof(String[] arr,String p) {

int begin=0;

int end=arr.length-1;

while(begin<=end) {  //begin往右走,end往左走

int mid=begin+((end-begin)>>1);

while(arr[mid].equals("")) { //中间元素为空的情况,将指针往右面移动一个。再重新比较

mid++;

//坑

if(mid>end) {

return -1; //另外一个出口

}

}

if(arr[mid].compareTo(p)>0) {

end=mid-1;

}

else if(arr[mid].compareTo(p)<0) {

begin=mid+1;

}else {

return mid;

}

}

return -1;

}

public static void main(String[] args) {

String s[]= {"a","ab","","bd","f"};

int res=indexof(s,"bd");

System.out.println(res);

}

}


题目四:优化a^n

思路:传统的用循环的写法,写出来的复杂度为O(n),可以将O(n)优化到O(log n)。

思路:log(n)的话,结合之前来看,是将本来的问题每次折半,上楼梯或者下楼梯的时候

一次上一半或者下一半。在求a^n时,每次将n翻一倍,例如将2^n,设定第一次指数为1,翻

第一次变成2,第二次变成4,第三次8,剩下的7次再交给第二个递归去做。这样就可以将

时间复杂度优化为O(log n)。


代码:

package LanQiaoKnowledge;

public class 求a的n次幂 {

//传统的循环写法

static int pow1(int a,int n) {

int res=1;

for(int i=0;i<n;i++) {

res=res*a;

}

return res;

}

static int pow2(int a,int n) {

if(n==0) { //出口

return 1;

}

int res=a; //a不能作为一个变量,所以设定一个数将a赋值给它

int exit=1; //初始的幂

while((exit<<1)<=n) { //循环能够继续的条件为每次幂翻倍以后仍然小于等于n

res=res*res;

exit=exit<<1; //每次一个循环过后,幂都要翻倍

}

//补差值

return res*pow2(a,n-exit); //如果n不能准确的翻倍来得到。不补差值,再调用递归

}

public static void main(String[] args) {

int answer=pow1(2,15);

System.out.println(answer);

System.out.println("*************");

int answer1=pow2(2,15);

System.out.println(answer1);

}

}


觉得越来越有些上头了,奥利给!

————————————————

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,968评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,601评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,220评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,416评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,425评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,144评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,432评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,088评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,586评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,028评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,137评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,783评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,343评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,333评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,559评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,595评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,901评论 2 345

推荐阅读更多精彩内容