C++
程序袁先森
希望能够和大家深入交流技术。本人坚信没有解决不了的问题,只有肯不肯动脑子解决。正在专注于把博客内容给提升上去,希望大家能够多多监督。个人博客还有私货内容请@私聊我。这个网站不让贴,谢谢思密达。
展开
-
使用Netbeans编译C++文件,动态链接库的方法
一键运行时会出现类似于下面的错误:Undefined symbols for architecture x86_64: "___gmp_printf", referenced from: _main in main.o "___gmpz_init", referenced from: _main in main.o "___gmpz_set_str", re...原创 2018-08-05 13:47:26 · 649 阅读 · 0 评论 -
数组(哈希表)的初始化问题-------LeetCode-202 引发的一些思考
题目略,可以自己在(https://leetcode-cn.com/problems/happy-number/submissions/)查看。本文不是对这个题进行讲解,而是对数组初始化进行讨论。原因本题目就是找一个“快乐数”,也就是每位数平方和相加是否为1,不是1的话继续讲下一个平方和的每位相加再进行平方和,于是就需要一直这样判断下去。有可能无限进行下午。怎么得到终止条件呢?...原创 2019-02-24 14:16:34 · 904 阅读 · 0 评论 -
leetcode-645 leetcode-442 总结-------“数组”查找重复数系列
引言有些关于数组的题目说难不难,说简单的话也非常不简单,如果稍微在数组操作中加一些限制条件,比如时间复杂度只能是O(n),空间复杂度只能是O(1)或者O(n),那么这样的题就跟数学题和智力题一样很考验人。类似题目leetcode-645 错误的集合;leetcode-442 数组中重复的元素;解题思路:刚开始的时候,我之前都是第一印象是对原来数组进行排序,这样一来数组中的数据假...原创 2019-03-08 12:50:10 · 361 阅读 · 0 评论 -
快速排序quickSort 算法实现
废话少说,直接show code.#include<iostream>using namespace std;//快速排序partationint partSort(int *array, int left, int right) //(左右下标){ int &key = array[right]; ...原创 2019-07-02 11:30:11 · 130 阅读 · 0 评论 -
算法:顺时针旋转90度一个m*m矩阵
要点提示:可以从最外层往最内层进行(跟剥洋葱一样),这样一层一层旋转,最终就可以实现所有的矩阵旋转 如何对一层进行旋转:我们定一个两个参考点:最外层的参考点为(0,0),(m-1,m-1).那么倒数第二外层的参考点就是(1,1),(m-2,m-2),然后能够组成90度的四个点就来回更换数值就可以了 类似的题目:旋转打印输出一个矩阵(类比推理,所有跟矩阵有关的进行固定方式的旋转,输出,都应该...原创 2019-07-04 14:11:20 · 1114 阅读 · 1 评论 -
C++ STL中set, maltimap等容器的使用小结 - LeetCode 49 题目
引用大家都知道很多算法题并不是思维逻辑的复杂性,而是数据结构的复杂性。好的、合适的数据结构对解某些题来说具有很好的启发作用,他能很快让你想到题目的最终的解决思路。对于C++程序员来说,数据结构容器类打包比较好的就是STL了,里面的容器有序列容器(array,vector,deque,list,forward-list);关联式容器(set,multiset,map,multimap);无序...原创 2019-07-13 17:04:13 · 379 阅读 · 0 评论 -
矩阵的“之"字遍历ZigZag打印
题目描述给一个m*n矩阵,请以“之"字型进行遍历输出,{ {1,2,3,4}, {5,6,7,8}, {9,10,11,12}, {13,14,15,16} }输出结果为:1 2 5 9 6 3 4 7 10 13 14 11 8 12 15 16{ {1,2,3,4}, {5,6,7,8}, {9,10,11,12} }输出:1 2 5 9 6 3 4 7 10 11 8 ...原创 2019-07-04 18:14:52 · 400 阅读 · 0 评论 -
BFPRT算法:求数组中第k小(大)的元素
BFPRTbfprt算法是用来求数组中第k小的元素的算法,bfprt算法可以在O(n)时间内求出答案。算法思想对于求数组中第k小的元素的问题,我们已经有很好的常规算法了,这个算法在最好的情况下时间复杂度是O(n),但在最坏的情况下是O(n^2)的,其实bfprt算法就是在这个基础上改进的。常规解法我们随机在数组中选择一个数作为划分值(number),然后进行快排的parta...转载 2019-07-20 11:14:32 · 371 阅读 · 0 评论 -
leetcode-199 解析 C++
题目 描述给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。示例:输入:[1,2,3,null,5,null,4]输出:[1, 3, 4]解释: 1 <---/ \2 3 <---\ \ 5 4 <---思路我的想...原创 2019-07-27 13:09:22 · 233 阅读 · 0 评论 -
C++中类所占内存,父类与子类所占内存大小的关系(详细记忆)
写在前面的话(就先听听)最近面试一直被面试官问道:一个类有什么什么变量,静态变量等,请问这个类所占内存多少字节呢? 假如这个类含有若干个虚函数,然后还有子类又定义了一些的自定义成员和成员函数,还有虚函数之类的?那么子类占用多少字节呢? 然后子类又继承了一个孙子类,孙子类有添加了若干个成员,然后定义了什么函数虚函数之类的,请问孙子类的内存大小又是多少呢?然后就一直摸棱两可的回答了一通,...原创 2019-02-23 01:01:34 · 2842 阅读 · 4 评论 -
LeetCode_8 字符串转换整数(atoi) 思想
题目描述 请你来实现一个atoi函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余...原创 2019-01-02 11:02:52 · 1484 阅读 · 5 评论 -
C++ 操作符重载(小结 持续更新ing )(欢迎收藏)
操作符重载一个原则是:被操作的数据类型中 至少有一个是自定义的类型(使用class定义类),如果被操作的变量都是基本类型,那么就不能定义操作符重载。 如果重载了new,则必须重载delete,因为系统知道了你自定义了怎么new一个空间, 但是呢,你使用delete的时候,系统并不知道怎么delete你所自定义申请的空间。类内定义与友元函数定义原则:对于二元操作符:二元操作符如果操...原创 2018-11-23 22:13:03 · 124 阅读 · 0 评论 -
二叉树的问题(更新ing)
前言在有序数组中,可以快速找到特定的值,但是想在有序数组中插入一个新的数据项,就必须首先找出新数据项插入的位置,然后将比新数据项大的数据项向后移动一位,来给新的数据项腾出空间,删除同理,这样移动很费时。显而易见,如果要做很多的插入和删除操作和删除操作,就不该选用有序数组。另一方面,链表中可以快速添加和删除某个数据项,但是在链表中查找数据项可不容易,必须从头开始访问链表的每一个数据项,直到找...转载 2018-11-26 17:35:18 · 281 阅读 · 0 评论 -
C++可以参考的库
感觉不错的C语言开源项目(转)1. Webbench Webbench是一个在Linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。下载链接:http://home.tiscali.c...原创 2019-02-23 01:04:11 · 341 阅读 · 0 评论 -
最简单的实现Linux C++多线程的互斥访问
#include <stdlib.h>#include <string.h>#include <iostream>#include <unistd.h>#include <errno.h>#include <pthread.h>using namespace std;//定义一个全局的互斥变量pthread...原创 2018-11-28 20:56:06 · 217 阅读 · 0 评论 -
leetcode-31 下一个排列
题目原型:实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1 解题思路以及代码:class S...原创 2018-12-07 15:18:09 · 82 阅读 · 0 评论 -
LeetCode 856 递归思路详解
题目描述 给定一个平衡括号字符串 S,按下述规则计算该字符串的分数:() 得 1 分。 AB 得 A + B 分,其中 A 和 B 是平衡括号字符串。 (A) 得 2 * A 分,其中 A 是平衡括号字符串。示例 1:输入: "()"输出: 1示例 2:输入: "(())"输出: 2示例 3:输入: "()()"输出: 2示例 4:...原创 2018-12-09 15:02:27 · 206 阅读 · 0 评论 -
LeetCode-27 移除元素->竟然击败了100%用户 (内附vector中erase的使用方法)
题目描述给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nu...原创 2018-12-10 13:42:33 · 374 阅读 · 0 评论 -
LeetCode_3 两数相加
题目描述给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 ->...原创 2018-12-29 12:58:57 · 785 阅读 · 0 评论 -
leetcode 739 解法思路
题目描述根据每日 气温 列表,请重新生成一个列表,对应位置的输入是你需要再等待多久温度才会升高超过该日的天数。如果之后都不会升高,请在该位置用0 来代替。例如,给定一个列表temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是[1, 1, 4, 2, 1, 1, 0, 0]。提示:气温 列表长度的范围是[1, 30000]...原创 2019-07-27 17:18:11 · 401 阅读 · 0 评论