1 橙子汁_

尚未进行身份认证

暂无相关简介

等级
TA的排名 2w+

关于C++的内存管理, 以及C++当中的 operator new和operator delete函数, 定位new表达式

在C语言当中, 动态内存的管理方式分为 malloc / calloc / realloc 和 freemalloc函数可以在堆上申请指定字节的内存空间, 申请成功返回申请到的空间的首地址, 如果申请失败会返回NULL.void* malloc(size_t size);注意malloc申请到的空间是没有经过初始化的calloc函数与malloc的功能相似, 但是calloc申请到的空间是经过初始化的, 初始化内容为0. void* malloc(size_t, num, size_t s

2020-05-25 21:31:53

矩阵中的路径

题目描述请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。例如,在下面的3×4的矩阵中包含一条字符串“bfce”的路径(路径中的字母用加粗标出)。[[“a”,“b”,“c”,“e”],[“s”,“f”,“c”,“s”],[“a”,“d”,“e”,“e”]]但矩阵中不包含字符串“abfb”的路径,因为字符串的第一个字符b占据了矩阵中的第一

2020-05-22 23:06:57

求n的阶乘, 不使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句

题目描述求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。代码示例:class Sum{public: Sum() { _sum += _i; ++_i; } static void Init() { _s...

2020-05-18 20:10:07

字符串区间部分翻转

题目描述给定一个字符串和一个整数 k,你需要对从字符串开头算起的每个 2k 个字符的前k个字符进行反转。如果剩余少于 k 个字符,则将剩余的所有全部反转。如果有小于 2k 但大于或等于 k 个字符,则反转前 k 个字符,并将剩余的字符保持原样。示例:输入: s = “abcdefg”, k = 2输出: “bacdfeg”要求:该字符串只包含小写的英文字母。给定字符串的长度和 k 在[1, 10000]范围内。来源:力扣(LeetCode)链接:字符串区间部分翻转代码示例:class

2020-05-13 21:09:46

关于C++当中泛型编程, 模板初阶(函数模板, 类模板)详解

C++泛型编程在C++当中, 泛型编程是一个十分重要的概念, 那么泛型编程到底是什么? 而它的作用及优点在哪里? 下面我们将一步步解释C++当中的泛型编程, 函数模板和类模板举个简单的例子, 在我们C语言当中, 如果我们想要实现一个交换函数, 比如下面这样:void Swap(int* a, int* b){ int tmp = *a; *a = *b; *b = tmp;}这...

2020-05-08 18:53:27

翻转字符串中的单词

题目描述给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例 1:输入: “Let’s take LeetCode contest”输出: “s’teL ekat edoCteeL tsetnoc”注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。来源:力扣链接:翻转字符串中的单词思路:根据空格将字符串中的每个单词分...

2020-05-06 19:39:44

C++当中提供的字母和数字相关的判断函数, 以及位运算对大小写字母转化的实现

字母数字相关判断的函数isalnum(char c) 判断是否为字母或者数字isalpha(char c) 判断是否为字母isdigit(char c) 判断是否为数字islower(char c) 判断是否为小写字母isupper(char c) 判断是否为大写字母...

2020-05-03 21:33:08

合并两个排序的链表

题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。题目来源: 牛客网思路:整体思路而言, 就是双指针, 把每一个节点的值拿出来与要插入的链表比较, 也用到插入排序的一个思路, 只是将数组换成了链表最重要的是, 我们要插入一个节点就要注意相关节点的断链和链接具体的操作流程见代码及代码注释代码示例:/*struct ListNode ...

2020-04-29 19:47:06

顺时针打印矩阵

题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 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.思路:通过分析其实不难发现, 在矩阵当中只有四条路可走:从左往右从上往下从右往左从下往上确定了这四条路...

2020-04-27 20:32:52

二叉树的镜像

题目描述操作给定的二叉树,将其变换为源二叉树的镜像。二叉树的镜像定义:源二叉树镜像二叉树思路:递归思路, 交换当前节点左右节点, 递归左子树, 递归右子树.非递归思路,...

2020-04-26 21:10:22

数值的整数次方

题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0.题目来源: 牛客网思路: 其中用到了快速幂算法, 还有需要注意底数和指数的关系问题特殊情况:1. base == 0时, exponent = 0, return 1; // 一般的将0^0看作1, 不必纠结2. base =...

2020-04-20 21:27:26

链表中倒数第k个结点

题目描述输入一个链表,输出该链表中倒数第k个结点。题目来源: 牛客网思路:这里提供两种思路遍历链表得到链表结点总数 count, 得到count和k的关系, 基于这个次数关系再遍历链表找到目标结点;代码示例:/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), ne...

2020-04-18 20:22:55

二叉树的子结构

问题描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)思路:首先实现一个函数, 判断两棵树的结构是否相同从数A的根节点开始, 递归左子树, 递归右子树, 逐个与树B进行比较, 当两棵树结构相同时, 说明树B是树A的子树代码示例:/*struct TreeNode { int val; struct TreeNode *left; ...

2020-04-16 17:56:40

反转单链表

题目描述输入一个链表,反转链表后,输出新链表的表头。/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* ReverseList(ListNode* pHead...

2020-04-14 16:07:31

根据二叉树前序遍历和后序遍历的结果重建二叉树

题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。题目来源: 牛客网思路: 递归构建二叉树代码示例:struct TreeNode { int val; TreeNode *...

2020-04-11 21:21:38

调整数组的顺序使奇数位于偶数前面

题目描述:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。题目来源: 牛客网思路:主要利用插排的一个思路,根据插排思路, 默认第一个数为有序, 对应到本题就是无论奇偶.从下标为1遍历数组, 若为偶数什么都不做, 若为奇数则一次判断前面数字的奇偶性, 遇到奇数停止插入...

2020-04-10 20:26:29

旋转数组的最小值

题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。题目来源: 牛客网思路:题目告诉给定的是一个非递减排序的数组的一个旋转, 例如数组{3,4,5,1,2}为...

2020-04-09 17:35:57

从尾到头打印链表

题目描述输入一个链表,按链表从尾到头的顺序返回一个ArrayList。题目来源: 牛客网思路: 链表遍历, 不断头插链表遍历方法:for (cur = head; cur != NULL; cur = cur->next);代码示例:class Solution {public: vector<int> printListFromTailToHead(L...

2020-04-06 20:28:02

替换空格

题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。题目来源: 牛客网思路:遍历字符串, 求空格数量, 字符串长度根据空格数量计算新字符串的长度利用新旧长度从后往前依次赋值代码示例:class Solution {public: void replaceSpac...

2020-04-05 21:04:05

用两个栈实现一个队列

题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。题目来源: 牛客网思路:队列最重要的特征就是先进先出, 而栈是先进后出因此, 可以将数据全部压入栈1中, 实现push操作pop操作是为了删除栈底的数据, 可以将栈1中的数据依次取出压入栈2, 直至栈1为NULL, 此时栈2的栈顶数据则为我们需要删除的数据, 对栈2执行pop操作即可.最后将栈2...

2020-04-03 15:23:59

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。