- 博客(13)
- 收藏
- 关注
原创 C++在行列都排好序的矩阵中找数
1. 题目描述给定一个有N*M的整型矩阵matrix和一个整数K,matrix的每一行和每一 列都是排好序的。实现一个函数,判断K是否在matrix中。 例如: 0 1 2 5 2 3 4 7 4 4 4 8 5 7 7 9 如果K为7,返回true;如果K为6,返回false。时间复杂度为O(N+M),额外空间复杂度为O(1)。2. 问题分析因为这里是行列都排好序了,所以我们不需要整...
2019-05-31 11:13:15 1055
原创 C++打印之字形矩阵
打印之字形矩阵1. 题目描述给定一个矩阵matrix,按照“之”字形的方式打印这个矩阵,例如: 1 2 3 4 5 6 7 8 9 10 11 12“之”字形打印的结果为:1,2,5,9,6,3,4,7,10,11,8,12额外空间复杂度为O(1)O(1)O(1).2. 解题思路这题如果扣下标的关系的话将很难写,会陷入局部关系.但是我们从整体出发思路就会开阔很多.和前面的类似,本...
2019-05-31 10:44:26 2196 1
原创 C++翻转单向链表
和上题不一样,这题我们需要改单链表的结构了.1.问题描述输入一个链表,反转链表后,输出新链表的表头。2. 解题思路参考剑指offer官方解法3. 代码#include <iostream>struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next...
2019-05-30 22:58:17 574
原创 C++实现从头到尾打印链表
1. 题目描述输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。2. 解题思路这里仅仅需要打印数值,而不是反转链表,这个还是有区别.如果单纯的反转打印链表的值的话,我们可以使用stack操作.3. 部分代码/*** struct ListNode {* int val;* struct ListNode *next;* ...
2019-05-30 22:08:29 1935
原创 C++矩阵顺时针旋转90度
接上题的旋转打印矩阵,本题是将矩阵旋转90度打印1. 题目描述将一个矩阵顺时针旋转90度, 比如给定一个矩阵A:旋转之后为:2. 思路和打印矩阵一样,这里也是从宏观出发,先旋转最外圈的,然后在旋转内圈的正方形. 关于我们旋转一个正方形代码我们只需要找到规律就好了.这里我们直接上代码了.3. 代码#include <iostream>#include <...
2019-05-30 16:53:28 12461
原创 C++实现转圈打印矩阵
给定一个整型矩阵 matrix,请按照转圈的方式打印它。1. 题目描述例如: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16打印结果为:1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10要求额外空间复杂度为O(1).2. 思路分析先打印最外圈,然后打印里面的一圈.只要设计出...
2019-05-30 16:11:38 1355
原创 C++用两个栈实现队列
1. 基础队列:先进先出,即插入数据在队尾进行,删除数据在队头进行;栈:后进先出,即插入与删除数据均在栈顶进行。2. 思路两个栈实现一个队列的思想:用pushStack栈作为push数据的栈,用popStack栈作为pop数据的栈。只要是对队列进行push操作,就将数据push入pushStack栈中。要实现队列的pop操作,有二点原则,如果popStack为空的话那...
2019-05-06 16:53:27 1470
原创 C++用两个队列实现栈
1. 基础队列:先进先出,即插入数据在队尾进行,删除数据在队头进行;栈:后进先出,即插入与删除数据均在栈顶进行。2. 思路两个队列实现一个栈的思想:用dataQueue队列作为push数据的队列,用helpQueue队列暂存数据。只要是对栈进行push操作,就将数据push入dataQueue队列中。要实现栈的pop操作,就要在dataQueue队列不为空的情况下,把...
2019-05-06 15:51:15 3144
原创 C++实现返回栈中最小元素的操作(时间复杂度O(1))
1. 题目实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作。要求:pop、push、getMin操作的时间复杂度都是O(1)O(1)O(1)。设计的栈类型可以使用现成的栈结构。2. 思路用两个栈来实现,栈sData存放入栈元素,栈sMin存放最小值。按照元素入栈顺序,将要入栈的第一个元素,同时压入两个栈中。后续每个元素入栈时,与sMin栈中栈顶元素...
2019-05-06 09:47:00 1231
原创 C++用数组结构实现大小固定的队列
1. 思路队列的先进先出的,需要一个数组和4个变量size,end,start,length。size记录已经进来了多少个元素,end记录刚进来的元素应该放在哪个位置,start表示用户要求弹出的元素所在的位置。size的作用不止于此,它还是end与start的操作的关键信息,使得end与start解耦,避免的很多的麻烦,当end或者start到底部的时候就跳回0处。length是数组的长度,...
2019-05-05 21:57:41 3056
原创 C++用数组结构实现大小固定的栈
1. 思路实现栈结构:栈结构是先进后出的,需要一个数组array、一个记录位置的变量index以及数组的大小size,当进来一个元素,size就++,出去一个元素size就–,然后弹出这个数据。2. 代码// 固定数组实现栈结构#include <iostream>#include <exception>class ArrayIndexOutOfBoun...
2019-05-05 21:17:35 723
原创 C++相邻最大差值
1. 题目描述相邻最大差值请设计一个复杂度为O(n)的算法,计算一个未排序数组中排序后相邻元素的最大差值。给定一个整数数组A和数组的大小n,请返回最大差值。保证数组元素个数大于等于2小于等于500。测试样例:输入: [9,3,1,10],4输出:返回:62. 思路首先求出数组的最大值max和最小值min;然后将该区间均等的划分为n+1份,即n+1个桶,那么由于只有...
2019-05-04 22:58:22 1444
原创 C++实现基本排序算法5:堆排序
今天我们开始实现堆排序, 仍然我们使用对数器来测试我们代码的正确性。1. 基本原理参考文章:图解排序算法(三)之堆排序算法基础–堆排序2. 代码#include <assert.h>#include <iostream>#include <vector>#include <cstdlib>#include <ctim...
2019-05-04 15:34:12 186
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人