随笔分类 -  剑指offer

摘要:冒泡排序 特点 不断比较两个相邻的元素,将值较大的元素交换到右边,如果遇到相等的值就不进行交换。 大/小元素经过不断的交换浮到顶端。 思路 以[10,1,35,61,89,36,55]为例 1)第一轮排序: 1.首先比较第一个值10和第二个值1,大小逆序了,所以交换.得到[1,10,35,61,89 阅读全文
posted @ 2020-03-10 13:42 闲不住的小李 阅读(282) 评论(0) 推荐(0)
摘要:题目-求1+2+3+...+n 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 思路 由于需要用到的就是一个递归,当n>0时,将后面的数字进行一个递归的相加。当输入0时,即n==0,输出0,直接不进行递归 阅读全文
posted @ 2020-03-05 18:26 闲不住的小李 阅读(219) 评论(0) 推荐(0)
摘要:题目-数字在排序数组中出现的次数 统计一个数字在排序数组中出现的次数。 如Input: array=1,2,3,3,3,3,4,6 k=3Output: 4 思路 1.由于输入的数组是排序的,那么二分查找算法很适用这个场景。二分查找很容易找到一个3,由于3可能出现很多次,因此我们可以在3的左右两边按 阅读全文
posted @ 2020-03-02 23:20 闲不住的小李 阅读(214) 评论(0) 推荐(0)
摘要:题目-数组中出现次数超过一半的数字 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 思路 1.数组中有一个数字出现的次数超过数组长度的一 阅读全文
posted @ 2020-03-02 20:31 闲不住的小李 阅读(256) 评论(0) 推荐(0)
摘要:4.2 画图 题目-二叉树的镜像 操作给定的二叉树,将其变换为源二叉树的镜像。 思路 求二叉树镜像的过程:1)交换根结点的左右子树;2)交换值为10的结点的左右子结点;3)交换值为6的结点的左右子结点。 总结这个过程就是:前序遍历这棵树的每个结点,如果遍历到的结点有子结点,就交换它的两个子结点。直到 阅读全文
posted @ 2020-02-11 12:21 闲不住的小李 阅读(236) 评论(0) 推荐(0)
摘要:题目 输入一个链表,输出该链表中倒数第k个结点。 思路 1.首先想到的是走到链表的尾端,再由尾端回溯k步。可是链表的节点定义看出这是单向链表,结点只有从前往后的指针,因此不能这样走。 2.只能从头节点开始遍历链表。那么我们可以先获取链表的结点数,就可以计算从前往后是需要走多少步了。但是这样需要遍历两 阅读全文
posted @ 2020-01-22 23:43 闲不住的小李 阅读(200) 评论(0) 推荐(0)
摘要:题目11 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 保证base和exponent不同时为0 思路 这里主要注意考虑边界条件。 1.当exponent为负数时,则是求base倒数的次方 2.当base为0时,就不能求base的负数 阅读全文
posted @ 2020-01-22 21:43 闲不住的小李 阅读(155) 评论(0) 推荐(0)
摘要:题目8 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 思路 题目给 阅读全文
posted @ 2020-01-19 23:36 闲不住的小李 阅读(157) 评论(0) 推荐(0)
摘要:题目6 输入一个链表的头节点,从尾到头反过来打印出每个结点的值 思路 1.使用递归。逆序打印a->b->c->d,可以先逆序打印b->c->d(看成新的链表),再打印a;那么同样逆序可以先逆序打印c->d,再打印b;直到打印到尾节点。 2.使用栈。栈具有后进先出的特点,刚好符合逆序要求。遍历链表时将 阅读全文
posted @ 2020-01-16 20:39 闲不住的小李 阅读(322) 评论(0) 推荐(0)
摘要:题目 将一个字符串中的空格替换成 "%20"。 思路 1.首先最容易想到的当然是新建一个字符串,从前往后,如果碰到一个空格,那么就添加在新字符串中添加"%20";如果碰到正常字符,就存入正常字符。(这是如果题目中允许创建新的字符串的情况) 2.(如果不允许新建字符串,而是要求在原来的字符串上进行替换 阅读全文
posted @ 2020-01-14 22:29 闲不住的小李 阅读(216) 评论(0) 推荐(0)
摘要:题目3 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。 解析 1.哈希表。用一个 阅读全文
posted @ 2020-01-13 22:21 闲不住的小李 阅读(163) 评论(0) 推荐(0)
摘要:题目 设计一个类,我们只能生成该类的一个实例 单例模式 定义:“一个类只有一个实例,并且自行实例化向整个系统提供” “保证一个类仅有一个实例,并提供一个访问它的全局访问点” 通过定义,我们可以得出在单例模式,需要我们注意的方面在于: 1.生成实例的代码只能执行一次,以此保证生成类的实例唯一。同时构造 阅读全文
posted @ 2020-01-12 22:32 闲不住的小李 阅读(172) 评论(0) 推荐(0)
摘要:题目 思路 1.首先回顾一下C++中类的相关知识点: 2.赋值运算符函数又具体是啥呢?在这个函数里面具体要实现一些什么内容呢? 那么通过第1点对于类的介绍,我们知道这个函数主要就是用来重载"="这个运算符,以避免使用默认赋值运算符带来的一些麻烦。也就是自己设计一个赋值操作来代替默认的"="来实现赋值 阅读全文
posted @ 2019-10-24 23:02 闲不住的小李 阅读(247) 评论(0) 推荐(0)