
剑指offer
qq_41051690
头疼
展开
-
剑指offer:二维数组中的查找
(1)查找的思路:首先从最右上角查询,如果查询的值大于给的目标值,则去除这一列,接着继续查询,再从最右上角查询的值如果小于给的目标值,由于给的数组从上到下,从左到右都是递增的,如果查询的值小于给的目标值,则行数相加,向下查询,依次循环。 (2)代码:C++代码 class Solution { public: bool Find(int target, vector<vector > ...原创 2019-09-03 00:03:14 · 125 阅读 · 0 评论 -
剑指offer:替换空格
1、题目描述 2、思路及代码 计算空格个数,同时添加的%20,其每次增加的字符个数为3-1=2个,增加的同时将空格之后的字符向后移动两个用来添加%20,主要是从后往前来循环,只需复制一次字符,所以时间复杂度为O(n). C++代码 class Solution { public: void replaceSpace(char *str,int length) { if (str ...原创 2019-09-03 23:53:11 · 153 阅读 · 0 评论 -
剑指offer:从尾到头打印链表
1、题目描述 2、代码及思想 思路简单:将各个字符输出,然后翻转一下,也可以使用栈的方式解决这种问题,也就是先进后出,后进先出的思想。 class Solution: # 返回从尾部到头部的列表值序列,例如[1,2,3] def printListFromTailToHead(self, listNode): # write code here r...原创 2019-09-08 00:24:27 · 115 阅读 · 0 评论 -
剑指offer:重建二叉树
1、题目描述 2、代码(python) # coding:utf-8; class Solution: # 返回从尾部到头部的列表值序列,例如[1,2,3] def printListFromTailToHead(self, listNode): # write code here result = [] while listNo...原创 2019-09-08 19:17:09 · 104 阅读 · 0 评论 -
剑指offer:用两个栈实现队列
1、题目描述 2、思路及代码 我们分别建立两个栈:stack1、stack2. 在stack1中存储数据也就是在队尾插入节点,而stack2用来弹出,也就是在队列头部删除节点的功能。主要在于如何删除头节点:需要将stack1的元素不停的使用pop()函数弹出,存放到stack2中,那么相当于将stack1不停的以相反的顺序压入stack2,则头节点也就在stack2的第一个元素,使用pop()函...原创 2019-09-08 22:56:25 · 111 阅读 · 0 评论 -
快速排序(python版)
1、概念:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 2、原理:递归的思想。 (1)在数列中,选择任意一个位置的元素作为基准值; (2)将所有值都跟该值进行比较,如果小于基准值的放到左边,大于等于基准值放到右边; (3)以基准值分层的左右两边...原创 2019-09-08 23:51:52 · 213 阅读 · 0 评论