自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

原创 C语言关于指针的知识点

指针是什么指针是编程语言中的一个对象,利用地址,它的的值直接指向存在电脑存储器中的另一个地方的值。通过地址就能找到所需的变量单元。因此地址形象化的称为指针,通过它能找到以它为地址的内存单元。就像生活中住酒店一样,通过房间号就找到了你要住的的房间,这里的房间号就是地址,而房卡就是指针,房卡上面存有房间号。指针是一个变量,存放内存单元的地址,存放在指针中的值都被当成地址处理。一个单元的大...

2019-01-29 20:57:41 851

原创 C++ 反转字符串中的单词 III

给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例 1:输入: “Let’s take LeetCode contest”输出: “s’teL ekat edoCteeL tsetnoc”注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。利用迭代器遍历的方式class Solution {public: str...

2019-01-23 18:04:18 1017

原创 C++ 字符串相加

给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。注意:1.num1 和num2 的长度都小于 5100.2.num1 和num2 都只包含数字 0-9.3.num1 和num2 都不包含任何前导零。4.不能使用任何內建 BigInteger 库,也不能直接将输入的字符串转换为整数形式。解题思路:本题主要采用循环相加,按加法运算规则的进位思想。先依次定义两个字符串的...

2019-01-23 18:00:04 15269

原创 C++ string类的模拟实现

string类的模拟实现要实现几大操作:1.string类对象的常见构造:构造函数、拷贝构造、赋值操作、析构函数2.modify修改操作:PushBack、Append、operator+=、Insert、Erase、Find3.string类对象的capacity容量操作:Resize、Reserve、Clear、Size、Capacity、Empty4.access下标访问:opera...

2019-01-22 19:20:39 802

原创 string类对象的常见操作

在C语言中,字符串是以’\0’结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,而且底层空间需要用户自己管理,稍不留神可能会越界访问。 标准库中的string类1) string是表示字符串的字符串类。2)该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作。3) string在底层实际是:bas...

2019-01-21 20:16:41 283

原创 string类的一些常见面试题

1.反转字符串编写一个函数,其作用是将输入的字符串反转过来。示例 1:输入: “hello”输出: “olleh”示例 2:输入: “A man, a plan, a canal: Panama”输出: “amanaP :lanac a ,nalp a ,nam A”class Solution {public: string reverseString(string s...

2019-01-20 19:09:08 672

原创 C++ 模板初阶

函数模板在了解函数模板之前我们实现一个通用的交换函数,想到的办法就是函数重载,但函数重载有几个不好的地方:1.重载的函数只是参数的类型不同,代码的复用率比较低,只要有新类型出现时,就需要增加对应的函数。2.代码的可维护性较低,一个出错可能所有的重载都出错了。模板的出现就是告诉编译器一个模子,编译器根据不同的类型利用模子来生成代码。函数模板:函数模板代表了一个函数家族,该函数模板与类型...

2019-01-20 18:05:06 153

原创 C/C++内存管理和内存泄漏

首先我们来看内存分布#include<iostream>using namespace std;int globalval = 1;static int staticglobalval = 1;void Test(){ static int staticval = 1; int locaval = 1; int num[10] = { 1, 2, 3, 4 }; ...

2019-01-18 16:47:41 285

原创 细谈C++中的“类和对象”

通过C语言的学习,我们了解到C语言是面向过程的,关注的是过程,分析求解问题的步骤,通过函数调用逐步解决问题。而现在所学的C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间交互完成。下面我们将一一看到C++中类和对象的相关运用。 类的定义class className{ //主体:由成员函数和成员变量组成};//后面有分号,和struct和union类似...

2019-01-17 20:53:13 215

原创 C++ 计算日期到天数转换

根据输入的日期,计算是这一年的第几天。。详细描述:输入某年某月某日,判断这一天是这一年的第几天?。接口设计及说明:/*****************************************************************************Description : 数据转换Input Param : year 输入年份Month 输入月份Da...

2019-01-17 17:23:58 5005 1

原创 用类和对象求1+2+3+...+n的值

求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)class Solution {public: class Sum //定义一个Sum的内部类 { public: Sum()//构造函数 { sum += i; ...

2019-01-17 16:39:43 365

原创 C++中 auto关键字和基于范围的for循环

auto关键字在C++11中,auto的定义为:auto不再是一个存储类型指示符,而是作为一个新的类型指示符来指示编译器,auto声明的变量必须由编译器在编译时期推导得到。#include<iostream>using namespace std;int TestAuto(){ return 10;}int main(){ int a = 10; auto b =...

2019-01-16 18:06:34 2420

原创 C++ 实现Date类的相关操作

#include<iostream>using namespace std;class Date{public: //带参构造函数 /*Date(int year = 2019,int month = 1,int day = 15) { _year = year; _month = month; _day = day; }*/ //拷贝构造函数 Date...

2019-01-16 16:26:39 450

原创 判断大小端的两种方式

首先我们要了解什么是大小端?为什么会有大小端模式之分呢?先回答后一个问题:这是因为在计算机系统中,我们以字节为单位,每个地址单元都对应着一个字节,一个字节有8个bit位,在C语言中除了8bit的char型之外,还有16bit 的short型,32bit的long型(具体要看不同的编译器)。对于位数大于8bit的处理器,例如16位或32位的处理器,由于寄存器宽度大于一个字节,那么就存在着将多个字节...

2019-01-15 22:37:38 3983

原创 C++入门知识点

学完了C语言之后,刚接触C++相对而言就比较容易了,因为C++兼容了C语言的语法规则,学完了C语言就相当于把C++的内容学了近三分之一。下面就让我们一步一步学习C++。C++关键字C++的关键字比C语言多了一大半,先初步了解一下,在以后我们会依次更深层次的学习。命名空间在C/C++中,变量、函数和类都是大量存在的,而这些变量、函数、类的名称都将存在于全局作用域中,就有可能导致许多冲突,...

2019-01-14 18:10:45 243

原创 计数排序

void CountSort(int* a, int n){ int max = a[0]; int min = a[0]; //for循环找到原数组中的最大值和最小值 for (int i = 0; i < n; i++) { if (a[i]>max) { max = a[i]; } if (a[i] < min) { min = ...

2019-01-11 19:04:28 90

原创 归并排序

void _MergeSort(int* a, int begin, int end, int* tmp){ if (begin >= end) { return; } int mid = begin + ((end - begin) >> 1); //递归左区间 _MergeSort(a, begin, mid, tmp); //递归右区间 _MergeS...

2019-01-11 19:02:34 87

原创 快速排序(非递归)

需要借助栈typedef int STDatatype;typedef struct Stack{ STDatatype* _a; int _top;//栈顶 int _capacity;//容量}Stack;void StackInit(Stack* ps){ assert(ps); ps->_a = NULL; ps->_capacity = 0; ps-...

2019-01-11 19:01:03 1360

原创 快速排序(递归)

1.hoare版本int PartSort1(int* a,int begin,int end)//hoare版本{ int key = begin;//把第一个位置设成关键字 while (begin < end) { //从后面选比关键字小的,如果关键字小于末尾的数,end往前走 while (begin < end && a[key] <...

2019-01-11 18:57:09 313

原创 最小栈

设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) – 将元素 x 推入栈中。pop() – 删除栈顶的元素。top() – 获取栈顶元素。getMin() – 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minS...

2019-01-10 19:03:41 90

原创 用栈实现队列

使用栈实现队列的下列操作:push(x) – 将一个元素放入队列的尾部。pop() – 从队列首部移除元素。peek() – 返回队列首部的元素。empty() – 返回队列是否为空。示例:MyQueue queue = new MyQueue();queue.push(1);queue.push(2);queue.peek(); // 返回 1queue.pop(); ...

2019-01-10 19:02:17 445

原创 用队列实现栈

使用队列实现栈的下列操作:push(x) – 元素 x 入栈pop() – 移除栈顶元素top() – 获取栈顶元素empty() – 返回栈是否为空注意:你只能使用队列的基本操作-- 也就是 push to back, peek/pop from front, size, 和 is empty 这些操作是合法的。你所使用的语言也许不支持队列。 你可以使用 list 或者 deque...

2019-01-10 19:00:08 383

原创 有效的括号

给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false示例 4:输入: “([)...

2019-01-10 18:56:41 109

原创 插入排序、希尔排序、选择排序、堆排序、冒泡排序的实现

插入排序基本思想:插入排序就是将待插入的数据与已经有序的序列中的数据进行比较。如果是升序排列:刚开始的第一个元素默认为有序即为a[end],此时end=0,然后将要插入的数据a[end+1]与a[end]进行比较,如果a[end]>a[end+1],就交换,–end,循环次操作,直到插入的数据与前面已经有序的最后一个数据都大时,再让end++。循环以上操作,直到所有数据都是升序排序...

2019-01-09 17:46:10 312

原创 二叉树的最近公共祖先

给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]示例 1:输入: root = [3,5,1,6,...

2019-01-06 18:06:20 646 2

原创 根据二叉树创建字符串

你需要采用前序遍历的方式,将一个二叉树转换成一个由括号和整数组成的字符串。空节点则用一对空括号 “()” 表示。而且你需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。示例 1:输入: 二叉树: [1,2,3,4]1/ 2 3/4输出: “1(2(4))(3)”解释: 原本将是“1(2(4)())(3())”,在你省略所有不必要的空括号对之后,...

2019-01-06 17:59:08 395

原创 二叉树与双向链表

输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*...

2019-01-06 17:55:46 1143 1

原创 二叉树基本接口的实现

首先声明结构体#pragma once#include<stdio.h>#include<malloc.h>#include<stdlib.h>#include<assert.h>typedef char BTDataType;typedef struct BinaryTreeNode{ BTDat

2019-01-05 17:57:26 264

原创 堆的代码实现

Heap.h#include<stdio.h>#include<assert.h>#include<malloc.h>#include<stdlib.h>#include<string.h>typedef int HPDataType;typedef struct Heap{ HPDataType* _array; ...

2019-01-03 16:16:28 318

原创 链表中倒数第k个结点(OJ)

输入一个链表,输出该链表中倒数第k个结点。/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* FindKthToTail(ListNode* pListHead...

2019-01-03 16:08:15 217

原创 链表的中间结点(OJ)

给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* middleNod...

2019-01-03 16:05:25 281

原创 反转链表(OJ)

反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL/** * Definition for singly-linked list. * struct ListNode { * int val;

2019-01-03 16:02:44 441

原创 移除链表元素(OJ)

删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5/** * Definition for singly-linked list. * struct ListNode {

2019-01-03 15:58:28 279

原创 带头双向链表接口的实现

List.h#pragma once#include<stdio.h>#include<malloc.h>#include<stdlib.h>#include<assert.h>typedef int LTDataType;typedef struct ListNode{ LTDataType _data; struct Lis...

2019-01-03 15:51:36 185

原创 单链表接口的实现

SList.h#ifndef __TEST_H__#define __TEST_H__#include<stdio.h>#include<assert.h>#include<stdlib.h>#include<malloc.h>typedef int SLTDataType;typedef struct SListNode{ S...

2019-01-03 15:43:09 208

原创 平衡二叉树(OJ)

给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct Tree...

2019-01-01 17:44:06 218

原创 对称二叉树(OJ)

给定一个二叉树,检查它是否是镜像对称的。/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */bool _isSymmetric(struct Tree...

2019-01-01 17:21:48 107

原创 二叉树的最大深度(OJ)

给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *r...

2019-01-01 16:42:53 319

原创 另一个树的子树(OJ)

给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。本题主要运用递归的思想:/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeN...

2019-01-01 16:21:56 131

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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