C++
single6
这个作者很懒,什么都没留下…
展开
-
快速排序--思路理解
与归并排序一样,快速排序也是一个分治算法,需要选择一个基准(第一个元素,最后一个元素,随机一个元素),以此基准作为划分;快速排序的关键是划分partion();。每一趟划分,我们就可以将作为基准值 x 放到排序数组的正确位置,并且将所有比 x 小的放到 x 的左边,所有比 x 大的元素放到 x 的右边。class QuickSort { /*将最后一个元素作为 pivot 进行划分操作*/ int partition(int arr[], int low, int hig...原创 2020-08-12 23:23:22 · 291 阅读 · 0 评论 -
LeetCode297:二叉树的序列化与反序列化
实现一个类:public class Codec { // 把一棵二叉树序列化成字符串 public String serialize(TreeNode root) {} // 把字符串反序列化成二叉树 public TreeNode deserialize(String data) {}}比如:serialize方法也许会把它序列化成字符串2,1,#,6,3,#,#,其中#表示null指针,那么把这个字符串再输入deserialize方法...原创 2020-08-12 00:06:27 · 173 阅读 · 0 评论 -
最大矩形、柱状图的最大面积 C++
最大矩形问题分两种:一种是柱状图的面积,一种是给出一个矩阵,找出矩阵(点为1)的最大面积;图形分别如下:后面一种可以转换成各行的柱状图的叠加;柱状图1 0 0 1 0 1 1 1 1 1 1 1 0 0 0 0 矩阵1、柱状图的最大面积核心思想主要是...原创 2020-07-27 22:51:19 · 704 阅读 · 0 评论 -
leetcode 习题 136. 只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。根据给出条件,一个数组,除了一个元素出现一次,其他元素均是成对出现;线性时间复杂度:时间复杂度最高为O(n)不使用额外空间:要求空间复杂度最高为O(1)。思路一:可以将数组排序,然后两个指针进行遍历即可:该数经过排序后肯定为偶数class Solution {public: int singleNumber(vector<int>& nums) {...原创 2020-07-23 22:00:06 · 182 阅读 · 0 评论 -
KMP算法详细解析(C/C++)
从文本中找出匹配的单词或者字符串,使用kmp算法,效率提升很多,可以防止多次重复比较,浪费时间;前提是需要找到该字符串的公共前后缀,不至于从头比较:具体分析如下:如:T : a a a a a a a a bP : a a a a b找出P的公共前后缀: 0: a 1 : a a 2 : a a a 3 : a a a a : a a a a b //总共五个字符,所以将前面的数组下移: -1 : a 0 : a a 1 : a a a 2 :原创 2020-07-19 12:29:44 · 285 阅读 · 0 评论 -
32位和64位系统下 int、char、long、double所占的内存
具体的如下;64位:Size of char : 1Size of unsigned char : 1Size of signed char : 1 Size of int : 4...翻译 2018-09-11 11:37:45 · 28988 阅读 · 6 评论 -
找到数组中第k大值的位置 ,字符串中单词替换
找出数组中第K大小的数,输出数所在的位置。例如{2,4,3,4,7},第1大的数是7,位置在4。第2大,第3大的数是4,位置在1,3,则返回1和3都可以。分析:考虑map:map<key,value> 自带对value去重和对key排序的功能,所以可以把位置下标放在value,把数组元素的值放在key。这样对key排序完,找到第k个值对应的下标就可以了。#include<...原创 2018-09-11 16:40:30 · 431 阅读 · 0 评论 -
重载与重写,进程间通信 等近期 C++ 笔试面试概要(1)
方法重载是指同一个类中的多个方法具有相同的名字,但这些方法具有不同的参数列表,即参数的数量或参数类型不能完全相同重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准。而重载的规则:1、必须具有不同的参数列表;2、可以有不责骂的返回类型,只要参数列表不同就可以了;3、可以有不同的访问修饰符;4、可以抛出不同的...原创 2018-09-12 10:28:29 · 263 阅读 · 1 评论 -
大端与小端,数据库事务,锁等近期C++笔试概要(2)
事务(Transaction),是指访问并可能更新数据库中各种数据项的一个程序执行单元(Unit),保持逻辑数据一致性与可恢复性。事务通常是由用户编写的程序执行所引起的,并用形如begin transaction和end transaction语句(或函数调用)来界定。事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。例如:...原创 2018-09-12 11:56:50 · 260 阅读 · 0 评论 -
同步异步,阻塞非阻塞 ,TCP/IP协议 ,快速排序一次后 等C++笔试面试(3)
同步、异步::消息的通知机制解释:涉及到IO通知机制;所谓同步,就是发起调用后,被调用者处理消息,必须等处理完才直接返回结果,没处理完之前是不返回的,调用者主动等待结果;所谓异步,就是发起调用后,被调用者直接返回,但是并没有返回结果,等处理完消息后,通过状态、通知或者回调函数来通知调用者,调用者被动接收结果。阻塞、非阻塞::程序等待调用结果时的状态涉及到CPU线程调度;所谓阻塞,就是调用...原创 2018-09-13 10:04:19 · 542 阅读 · 0 评论 -
A、B、C、D类地址及子网掩码,由IP地址和子网掩码求网络地址 等C++笔试面试(4)
某主机IP地址为192.168.34.178,子网掩码为255.255.255.192,该主机的网络ID是什么?把192转化为二进制:11000000.子网掩码(二进制):11111111.11111111.11111111.11000000主机数:2的6次方=64台-2=62台 减2是因为主机不包括网络地址和广播地址。 也就是子网掩码全是1 的即:前26位是网络ID,后6位是主机I...原创 2018-09-13 11:14:02 · 10211 阅读 · 1 评论 -
OPPO笔试 把字符串分隔成逗号分隔成数组 int,string
输入一串数字字符串,逗号相隔,分成int型;#include<iostream>#include <vector>#include <string.h>#include<string>#include<stdlib.h>using namespace std;typedef string::size_type sz;i...原创 2018-09-11 09:31:48 · 452 阅读 · 0 评论 -
分数序列的前n项之和
分数序列 2/1,3/2,5/3,8/5,13/8,21/13,.... 求这个分数序列的前n项之和。#include<iostream>#include<stdio.h>using namespace std;int main(){ int N; double a = 2; double b = 1; double c = 0;...原创 2018-09-11 09:52:22 · 1968 阅读 · 0 评论 -
对于一些线程和进程的问题总结
线程之间的锁有:互斥锁、条件锁、自旋锁、读写锁、递归锁。一般而言,锁的功能越强大,性能就会越低。1、互斥锁互斥锁用于控制多个线程对他们之间共享资源互斥访问的一个信号量。也就是说是为了避免多个线程在某一时刻同时操作一个共享资源。例如线程池中的有多个空闲线程和一个任务队列。任何是一个线程都要使用互斥锁互斥访问任务队列,以避免多个线程同时访问任务队列以发生错乱。在某一时刻,只有一个线程可以获...翻译 2018-09-27 08:20:54 · 1669 阅读 · 0 评论 -
关于动态规划的专题习集,C++ 换硬币,背包问题
数字三角形 5 1 412 34 56 在上面的数字三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字之和最大。路径上的每一步都只能往左下或 右下走。只需要求出这个最大和即可,不必给出具体路径。 三角形的行数大于1小于等于100,数字为 0 - 99 输入格式:351 412 34 56递归方法:...原创 2018-09-11 11:33:00 · 912 阅读 · 0 评论 -
C++ 笔试中的指针 *p
请找出下面程序中有哪些错误:int main(){ int i=10; int j=1; const int *p1;//(1) int const *p2=&i; //(2) p2=&j;//(3) int *const p3=&i;//(4) *p3=20;//(5) *p2=30;//(6) p3=&...原创 2018-08-31 16:55:23 · 567 阅读 · 0 评论 -
输入整数,倒着输出整数
#include<bits/stdc++.h>using namespace std;static bool L = false;int fun(int a){ if(a>0) { if(a%10==0){//判断最后一位是否为0 if(L==false){防止中间有0,最后不能输出 a=...原创 2018-07-17 21:29:02 · 1652 阅读 · 0 评论 -
c++万能头文件
#include<bits/stdc++.h>这个在在线编程时方便原创 2018-07-17 21:32:36 · 1892 阅读 · 0 评论 -
C++ vector类中,使用push_back的初始化
vector<int> v; while (cin >> n){ cin.get(); v.push_back(n); }直接将输入的n存进v的容器中原创 2018-07-17 21:38:50 · 2477 阅读 · 0 评论 -
C++ 运算符 | &
对于整型来说 | & 是位的运算a|b: 或运算,每个位都是取最大值,所以会返回a和b中每个位(比特,即二进制)最大的值。同理a&b 与运算,会返回a和b中每个位(比特,即二进制)最小的值;...原创 2018-07-18 09:08:45 · 1393 阅读 · 0 评论 -
cout 和printf的区别,输出不同
一道编程,使用cout时只能输出一行,用printf时直接AC,还是有差异的输出为一下 用printf时直接是下面有的说是cout要到回车或流刷新时才会输出。还是有些不懂...原创 2018-07-18 09:48:50 · 2762 阅读 · 0 评论 -
多态性有哪些,怎么实现
C++的多态性:在基类的函数前加上virtual关键字,在派生类中重写该函数,指相同的对象收到不同的消息或者不同的对象收到相同的消息时产生的不同的实现动作。如果对象类型是派生类,就调用派生类的函数;如果对象类型是基类,就调用基类的函数。支持两种多态:编译时多态(静态)、运行时多态(动态)编译时多态:就是在编译期确定的一种多态。在C++中主要体现在函数模板,函数重载和多态无关。运行时多态性:...原创 2018-07-23 21:20:06 · 5304 阅读 · 0 评论 -
map[].push_back() C++
map普通的插入都是使用insert,map.insert(map<int,int>(t-i,i)),但是如果想使用vector那样使用push_back,可以map[n].push_back(i),这样也可以完成插入.类似于vec.push_back(),如https://blog.csdn.net/single6/article/details/81584699for(int ...原创 2018-08-10 19:24:20 · 13100 阅读 · 2 评论 -
为什么hashtable桶数通常会取一个素数?如何有效避免hash结果值的碰撞
为什么一般hashtable的桶数会取一个素数 假如有一个哈希函数:H( c ) = c % N;当N取一个合数时,最简单的例子是取2^n,比如说取2^3=8,这时候H( 11100(二进制) ) = H( 36 ) = 4H( 10100(二进制) ) = H( 28)= 4这时候c的二进制第4位(从右向左数)就”失效”了,也就是说,无论第c的4位取什么值,都会导致H( c )...原创 2018-08-02 09:58:55 · 3019 阅读 · 0 评论 -
腾讯后台开发笔试题
1、给定一个排序二叉树,找出第K大的值2、给出一个数组,和一个定值,打印出满足定值的数组里面的两个值3、用二分法得出一个函数的解4、用C++表示出一个具有加法乘法的计算...原创 2018-08-02 10:03:21 · 1221 阅读 · 0 评论 -
[编程题]手串
链接:https://www.nowcoder.com/questionTerminal/429c2c5a984540d5ab7b6fa6f0aaa8b5来源:牛客网 作为一个手串艺人,有金主向你订购了一条包含n个杂色串珠的手串——每个串珠要么无色,要么涂了若干种颜色。为了使手串的色彩看起来不那么单调,金主要求,手串上的任意一种颜色(不包含无色),在任意连续的m个串珠里至多出现一次(注意这...原创 2018-08-11 11:24:04 · 2498 阅读 · 0 评论 -
C++ string.substr
#include<string>#include<iostream>using namespace std;main(){string s1("12345789");string a=s1.substr(0,4); //获得字符串s1中 从第0位开始的长度为4的字符串//默认时的长度为从开始位置到尾cout<<a<<end...原创 2018-08-22 16:36:55 · 1695 阅读 · 0 评论 -
空结构体的大小和为什么内存对齐
空类,没有任何成员变量或函数,即没有存储任何内容;但是空类仍然可以实例化,如:classA A; cout<<"sizeof(A): "<<sizeof(A)<<endl;输出为1,。一个类能实例化就会分配内存空间,来指示它的地址。默认分配了一个字节(如:char),以标记可能初始化的类实例,同时使空类占用的空间也最少(即1字节)。 内存对齐可以提高CP...原创 2018-08-23 10:57:14 · 232 阅读 · 0 评论 -
sizeof(char str[])的大小、sizeof(char *str)
void Func(char a[100]){cout<< sizeof(a) << endl; // 4 字节而不是 100 字节 }在C/C++里数组作为参数时传递的实际上是指向数组第一个元素的指针,因此sizeof(str)返回的是指针的大小,即4。 注意以下三种形式的参数是完全等价的: 1 2 3 v...原创 2018-08-30 20:31:46 · 15436 阅读 · 0 评论 -
将石头分成质量相近的两组,并输出
背包问题,可以转化为0.1,递增排序好,选定两个,从最大的开始比较,给较小的加上第三大,以此循环,最后可以输出#include <iostream>#include<cstring>#include<vector>#include<algorithm>using namespace std;int main(){ i...原创 2018-07-17 21:02:59 · 1029 阅读 · 0 评论