自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

暮日落流年的博客

记录学习生活中的一些所思、所想

  • 博客(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关注的人

提示
确定要删除当前文章?
取消 删除