随笔分类 -  剑指Offer

摘要:题目描述: 实现函数double Power(double base,int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。 解决思路: 1.最简单的思路是从1到exponent进行循环,对base进行自乘;缺点:忽略了底数和指数取得特殊值的情况(底数 阅读全文
posted @ 2018-07-23 20:18 meteorst 阅读(116) 评论(0) 推荐(0)
摘要:题目: 解题思路:常规的解法可以去遍历整数对应二进制的每一位,比如:数字9的二进制1001,依次将每一位的数字与1进行 与 运算,若结果为1则表明对应的位数为1; 然后去累积计算1的总体个数。 代码如下: 但是因为int在内存中站32位,故这种方法为循环32次; 有没有一种方法是二进制中有多少个1就 阅读全文
posted @ 2018-06-27 15:56 meteorst 阅读(141) 评论(0) 推荐(0)
摘要:两个栈实现队列的思路: 队列的特点是的先进先出; 栈的特点是先进后出; 将数据存入栈1,再按其输出的特点存入栈2; 这样数据最后就可以实现先进先出的特点; 代码实现: 阅读全文
posted @ 2018-06-24 22:56 meteorst 阅读(114) 评论(0) 推荐(0)
摘要:链表的特点:查找效率较慢,插入和删除的效率较快 链表的数据结构: 将链表反转输出最直接的方法就是改变链表的结点指向: pre/cur/temp作为改变链表指向的三个指针,然后再遍历链表的过程中去改变结点的指向; 代码如下: 第二种方法可以用栈结构加循环来输出反转链表: 创建栈结构来保存结点,然后根据 阅读全文
posted @ 2018-06-24 18:57 meteorst 阅读(96) 评论(0) 推荐(0)
摘要:题目: 解题思路: 若不考虑时间复杂度的情况,从前向后遍历,在原始的数组上进行操作,每当遇到空格,就将替换的字符插入,后面的字符向后移动,这样若存在o(n)个空格的话, 长度为o(n)的字符就会向后面进行o(n)次移动复制,时间复杂度为o(n^2); 若考虑时间复杂度,就需要减少频繁复制的次数,解决 阅读全文
posted @ 2018-06-24 15:35 meteorst 阅读(116) 评论(0) 推荐(0)
摘要:题目: 解题思路: 查找的本质就是先指定一个初始值,把初始值与要查找的数进行比较,如果两个数相等,就返回true,否则初始值发生变化,继续与要查找的值进行比较,直到找到或找不到; 在本题中的二维数组中,数字的排序遵循从左向右增加,从上往下增加的规律,问题的关键在于如何选取适当的初始值,来简化查找的过 阅读全文
posted @ 2018-06-24 14:38 meteorst 阅读(104) 评论(0) 推荐(0)