C++
文章平均质量分 69
被月亮晒黑_
这个作者很懒,什么都没留下…
展开
-
【C++程序设计】从c走进c++
1.函数指针 (1)基本概念:程序运行期间,每个函数都会占用一段连续的内存空间。而函数名就是该函数所占内存区域的起始位置(也称入口地址)。我们可以将一个函数的入口地址赋值给一个指针变量,使该指针变量指向该函数。然后通过指针变量就可以调用这个函数。这种指向函数的指针被称为函数指针。 (2)函数指针定义形式: 类型名(*指针变量名)(参数类型1,参数类型2,......原创 2018-06-12 17:13:56 · 190 阅读 · 2 评论 -
【LeetCode】11.搜索插入位置
0.题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 你可以假设数组中无重复元素。 1.解法1 这道题比较简单,我们先考虑特殊情况: (1)如果数组为空,那么返回0。 (2)如果target比Nums[0]小,那么返回0,如果target比 (3)如果target比nums的最后一个数大,那么返回n...原创 2019-02-23 20:22:50 · 110 阅读 · 0 评论 -
【LeetCode】15.桶排序 (347 前K个高频元素)
0.题目说明 给定一个非空的整数数组,返回其中出现频率前 k 高的元素。 1.桶排序 桶排序可以参考这篇博客: https://www.jianshu.com/p/e6ba35133375 桶排序代码如下: vector<int> bucketSort(vector<int>& nums) { vector<int> ret;原创 2019-03-10 23:32:31 · 325 阅读 · 0 评论 -
【LeetCode】12.两数之和2(167双指针)
0.题目要求 给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。 函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。 说明: 返回的下标值(index1 和 index2)不是从零开始的。 你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。 示例: 1.暴力解法 暴力解法就是两层循环依次遍历,直到找到符...原创 2019-03-07 20:14:49 · 167 阅读 · 0 评论 -
【LeetCode】13.快速排序和堆排序 (215 数组中的第K个最大元素)
0.题目说明 在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 这道题可以看成是排序题,我这里借着这道题实现一下快排和堆排序。 1.快速排序 快速排序相关的内容我看的这篇博客,讲得很清楚:https://blog.csdn.net/adusts/article/details/80882649 我用他的思路写的程序如下:...原创 2019-03-08 00:56:22 · 362 阅读 · 0 评论 -
【LeetCode】16.二分法 (69)
0.题目描述 实现 int sqrt(int x) 函数。 计算并返回 x 的平方根,其中 x 是非负整数。 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。 1. 二分法 这道题利用二分法的思想,若当前数的平方大于x,当前数的前一个数的平方小于x,则可判定是否是x的平方根。代码如下 int mySqrt(int x) { int low = 0,high = x; in...原创 2019-03-12 21:45:42 · 177 阅读 · 0 评论 -
【LeetCode】19.链表(160)
0.链表介绍 (1) 如图, 链表是一种非常常用的数据结构 链表头:指向第一个链表结点的指针 链表结点:链表中的每一个元素,包括:(1)当前结点的数据,(2)下一个结点的地址 链表尾:不再指向其他结点的结点,其地址部分放一个NULL,表示链表到此结束。 (2) 链表可以动态地创建 动态地申请内存空间: int*pint = new int(1024); delete pint; int*...原创 2019-07-30 23:34:42 · 153 阅读 · 0 评论 -
【LeetCode】17.贪心(455)
0.题目描述 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有一个尺寸 sj 。如果 sj >= gi ,我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。 实例如下 1.题目分析...原创 2019-07-28 14:43:21 · 125 阅读 · 0 评论 -
【LeetCode】10.实现strStr()
0.题目描述 实现 strStr() 函数。 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。 1.题目分析 首先我们来看平凡的情况。我这里分以下几个情况: (1)haystack为空,needle不为空。处理:返回-1。 (2)haystack为...原创 2019-01-09 23:29:45 · 167 阅读 · 0 评论 -
【LeetCode】8.删除排序数组中的重复项
0.题目描述 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 1.解法一 首先考虑平凡的情况,输入数组为空数组或只有一个元素时,输出原数组,返回值为原数组长度。 因为数组是有序数组,所以我们从前往后遍历,若前后两个数字相同则继续遍历,若前后两...原创 2019-01-02 10:24:29 · 88 阅读 · 0 评论 -
【LeetCode】1.两数之和
0.题目分析 这道题目要求给定一个整数数组 nums 和一个目标值 target,在该数组中找出和为目标值的 两个 整数。 可以假设每种输入只会对应一个答案。但是,不能重复利用这个数组中同样的元素。 比如: 看到题目,首先想到的是暴力搜索法。 1.暴力解法 class Solution { public: vector<int> twoSum(vector&l...原创 2018-12-04 10:34:44 · 229 阅读 · 0 评论 -
【LeetCode】2.整数反转
0.题目 给出一个 32 位的有符号整数,将这个整数中每位上的数字进行反转。 注意: 假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31, 2^31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。 1.解法一 先将x每一位拿出来再计算 分析:我拿到题目想到的是先将拿到的数字取余后push进一个...原创 2018-12-05 11:34:30 · 120 阅读 · 0 评论 -
【LeetCode】5.最长公共前缀
0.题目描述 编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。 1.题目分析 拿到这道题首先考虑平凡的情况,一个是当vector里只有一个字符串,那么就返回这个字符串,然后第2种情况是vector为空,那么返回的也是空,然后第三种情况我们才接下来继续考虑。 想到的是依次遍历,但是第一层遍历次数是多少?我的解法是先把字符串vector里的最短的...原创 2018-12-19 16:14:50 · 128 阅读 · 0 评论 -
【LeetCode】4.罗马数字转整数
0.题目描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。 通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等...原创 2018-12-15 13:47:42 · 285 阅读 · 0 评论 -
【LeetCode】7.合并两个有序链表以及链表简介
0.题目描述 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 1.链表简介 (1) 如图, 链表是一种非常常用的数据结构 链表头:指向第一个链表结点的指针 链表结点:链表中的每一个元素,包括:(1)当前结点的数据,(2)下一个结点的地址 链表尾:不再指向其他结点的结点...原创 2018-12-26 19:55:14 · 106 阅读 · 0 评论 -
【LeetCode】6.有效的括号
0.题目描述 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 举例: 1.题目分析 拿到这道题首先想到的是利用栈,这也是括号问题的经典解法。思路是: (0).若字符串为空,返回true ...原创 2018-12-21 16:41:05 · 120 阅读 · 0 评论 -
【LeetCode】3.回文数
0.题目分析 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 首先可以分析如果这个数是负数,肯定不是回文数。 1.方法一 先将整数反转再判断 首先想到的思路是将第2道题的整数反转方法先用于整数反转,然后再判断反转前后两数字是否相同。 代码比较简单,如下: class Solution { public: bool isPalind...原创 2018-12-12 13:34:43 · 436 阅读 · 0 评论 -
【LeetCode】9.移除元素
0.题目描述 给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 1.解法一:使用迭代器 此种方法简单明了,迭代器遍历,遇到相等的元素便删除,迭代器使用方法代码: ...原创 2019-01-05 22:57:28 · 131 阅读 · 0 评论 -
【LeetCode】21.栈和队列(242)
目录0.题目描述1.题目分析2.补充:在python中实现栈 0.题目描述 使用栈实现队列的下列操作: push(x) – 将一个元素放入队列的尾部。 pop() – 从队列首部移除元素。 peek() – 返回队列首部的元素。 empty() – 返回队列是否为空。 1.题目分析 首先说明一下栈的常用操作,C++里,如stack s 可以初始化一个栈: s.empty(); ...原创 2019-08-06 12:17:43 · 171 阅读 · 0 评论