剑指offer(Java版)day03:二进制中1的个数|数值的整数次方|调整数组顺序使奇数位于偶数前面|链表中倒数第k个结点|反转链表|合并两个排序的链表

    1二进制中1的个数

【题目】输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

【考察点】位运算

【思路】把这个数逐次右移,然后和1与,就得到最低位的情况,其他位都为0,如果最低位是0和1与之后依旧 是0,如果是1,与之后还是1。对于32位的整数,这样移动32次,就记录了这个数二进制中1的个数了。 

【出错】与之后的结果是int型数据,我们不能直接把它当boolean型数据来判断它是否为真,而是判断它是否==1。

【代码】

    2数值的整数次方

【题目】给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。

【考察点】代码的完整性

【思路】两种情况,exponent>=0或者exponent<0。

1)exponent>=0

exponent=0,return 1

exponent=1,return base

其余做计算

2)exponent<0

exponent=-1,return 1/base

其余做计算

【错误】我在做计算的时候直接用base*=base这样会报错,后来就int了一个b,b*=base这样就可以了。

【代码】

    3调整数组顺序使奇数位于偶数前面

【题目】输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。

【考察点】代码的完整性

【思路】使用冒泡排序的思想,只是内层循环中交换的判断条件变成了:当前位置元素为偶数,当前位置的下一个位置的元素为奇数。

【错误】犯了手误型错误,呜呜。

比如把“==”写成了“=”,把内层循环的j全写成了i,把array全写了a.....打打~

【代码】

    4链表中倒数第k个结点

【题目】输入一个链表,输出该链表中倒数第k个结点。

【考察点】代码的鲁棒性

【思路】一种比较短小精悍的解法,设置两个指针,一快一慢,快指针先走k步,然后慢指针和快指针一起走,当快指针到达末尾(==null)的时候,慢指针所指的就是第k个结点。另外设置了一个变量i,这个i的值最后就是该链表的长度(包括结尾的空指针)。所以最后return的时候判断i和k的大小,若i小于k则超出范围返回null,否则的话返回慢指针所指的结点。

【注意】1)判断到达末尾的条件是(快指针==null)。2)i小于k说明k值超出了这个链表长度的范围,其中也包括了链表为null这种情况(此时i=0)。

【错误1】是.next而不是->next,切记。

【错误2】误把最后一个语句中的i<k写成i>k了。

【代码】

    5反转链表

【题目】输入一个链表,反转链表后,输出新链表的表头。

【考察点】代码的鲁棒性

【思路】另外设置了两个指针,newHead是我们未来要返回的新表头,next用来暂存旧的链表的当前元素的下一位。head一直在向后移动,移动的到的位置就是next所指的位置,newHead紧跟着head移动,但比head慢一步,因为它每次都要等当前元素的next指向变换后才能移动。当head为null时,newHead所指位置就是链表的最后一个结点,此时所有结点的next指向都反转了,newHead也就是新表头。

【错误】手误把head=next那一句写成了head=head.next。

【代码】

    6合并两个排序的链表

【题目】输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。

【考察点】代码的鲁棒性

【思路】顺序分别比较两个链表的头结点,小的那个加入新链表。遍历完其中一个之后,另一个剩余部分加入新链表尾部即可。

【错误1】出现了中文的“!”

【错误2】不小心把ListNode写成listNode了。

【错误3】没有考虑到list1或者list2为空的情况。

【错误4】没有设置一个临时结点来作为新链表的移动结点。(头结点确定后它要停在原位,否则新链表建好之后它还要再一步一步找回来多麻烦呀,这个时候临时结点就可以代替它往后移动啦)

【代码】

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

推荐阅读更多精彩内容