自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 资源 (1)
  • 收藏
  • 关注

原创 数据结构--前缀和

#include<iostream>using namespace std;const int N=1e5+10;int n, m;int a[N], s[N];int main() { scanf("%d%d", &n, &m); for(int i = 1; i <= n; i++) scanf("%d", &a[i]); for(int i = 1; i <= n; i++) s[i] = s[i - 1] .

2021-09-23 17:52:00 145

原创 在O(1)时间删除链表结点

/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: void deleteNode(ListNode* node) { node->val = node->n.

2021-09-08 15:54:31 105

原创 《剑指offer》-->数值的整数次方

描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0。不得使用库函数,同时不需要考虑大数问题,也不用考虑小数点后面0的位数。class Solution {public: double Power(double base, int exponent) { double res = 1; for(int i = 0; i < abs(exponent);

2021-09-03 16:30:47 102

原创 《剑指offer》--> 二进制中1的个数

描述输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示。class Solution {public: int NumberOf1(int n) { int res = 0; unsigned int un = n; //有符号整数,如果是负数,右移后会在最高位补上1,无符号整数,右移后会在最高位补零 while (un) res += un & 1, un >>= 1;//把个位取出来, <<

2021-09-03 16:19:43 68

原创 《剑指offer》-->机器人的运动范围

描述地上有一个rows行和cols列的方格。坐标从 [0,0] 到 [rows-1,cols-1]。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于threshold的格子。 例如,当threshold为18时,机器人能够进入方格[35,37],因为3+5+3+7 = 18。但是,它不能进入方格[35,38],因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?范围:1 <= rows, cols<= 10

2021-09-03 16:05:47 55

原创 《剑指offer》--> 剪绳子

描述给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1,m<=n),每段绳子的长度记为k[1],…,k[m]。请问k[1]x…xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。输入描述:输入一个数n,意义见题面。(2 <= n <= 60)返回值描述:输出答案。示例1输入:8返回值:18class Solution {public: int

2021-09-03 16:03:20 49

原创 《剑指 Offer》--- 用两个栈实现队列

描述用两个栈来实现一个队列,分别完成在队列尾部插入整数(push)和在队列头部删除整数(pop)的功能。 队列中的元素为int类型。保证操作合法,即保证pop操作时队列内已有元素。示例:输入:[“PSH1”,“PSH2”,“POP”,“POP”]返回:1,2解析:“PSH1”:代表将1插入队列尾部“PSH2”:代表将2插入队列尾部"POP“:代表删除一个元素,先进先出=>返回1"POP“:代表删除一个元素,先进先出=>返回2class Solution{public:

2021-09-03 13:49:13 126

原创 C++面试总结

C++ 内存对齐1)内存对齐的定义数据项只能存储在地址是数据项大小的整数倍的内存位置上。现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。2) 使用原因平台原因:不同硬件平台对存储空间的处理上存在很大的不同。某些平台对特定类型的数据只能从特定地址开始存取,而不允许其在内存中任意存放;性能原因:为了访

2021-08-30 05:22:39 591

原创 计算机网络

三次握手四次挥手TCP/IP 协议是传输层的一个面向连接的安全可靠的一个传输协议,三次握手的机制是为了保证能建立一个安全可靠的连接,那么第一次握手是由客户端发起,客户端会向服务端发送一个报文,在报文里面:SYN标志位置为1,表示发起新的连接。当服务端收到这个报文之后就知道客户端要和我建立一个新的连接,于是服务端就向客户端发送一个确认消息包,在这个消息包里面:ACK标志位置为1,表示确认客户端发起的第一次连接请求。以上两次握手之后,对于客户端而言:已经明确了我既能给服务端成功发消息,也能成功收到服务端的响应

2021-08-21 20:11:20 313

原创 排序--堆排序

#include<iostream> #include<algorithm>using namespace std;const int N = 100010;int h[N], mySize;int n, m;void down(int u){ int t = u; if (2 * u <= mySize && h[t] > h[2 * u]) t = 2 * u; if (2 * u + 1 &

2021-08-06 17:26:55 100

原创 排序--归并排序

归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。1 算法描述把长度为n的输入序列分成两个长度为n/2的子序列;对这两个子序列分别采用归并排序;将两个排序好的子序列合并成一个最终的排序序列。2 动图演示#include <iostream>#include <vect

2021-08-05 21:24:38 49

原创 排序-插入排序

插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。1 算法描述一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:从第一个元素开始,该元素可以认为已经被排序; 取出下一个元素,在已经排序的元素序列中从后向前扫描;如果该元素(已排序)大于新元素,将该元素移到下一位置; 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;将新元素插入到该位置后; 重复步

2021-08-05 18:51:31 66

原创 排序-冒泡排序

冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。1.1 算法描述比较相邻的元素。如果第一个比第二个大,就交换它们两个;对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;针对所有的元素重复以上的步骤,除了最后一个; 重复步骤1~3,直到排序完成。1.

2021-08-04 20:59:48 91

原创 826. 单链表

#include<iostream>using namespace std;const int N = 100010;int head, e[N], ne[N], idx;// head存储链表头,e[]存储节点的值,ne[]存储节点的next指针,idx表示当前用到了哪个节点// 初始化void init(){ head = -1; idx = 0;}// 将x插入到头节点void add_to_head(int x){ e[idx] ..

2021-07-30 10:50:09 48

原创 789. 数的范围

#include <iostream>using namespace std;const int N = 100010;int n, m;int q[N];int main() { scanf("%d%d", &n, &m); for (int i = 0; i < n; i++) scanf("%d", &q[i]); while (m--) { int x; scanf("%d",..

2021-07-27 00:31:36 52

原创 排序-快速排序--第k个数

#include <iostream>using namespace std;const int N = 1e6 + 10;int n, k;int q[N];void quick_sort(int l, int r, int k)//局部变量和全局变量重名,优先使用局部变量{ if(l == r) return q[l];//边界问题,如果只有一个数或者没有数字就不用排序了 int i = l - 1, j = r + 1, x = q[l + r >&

2021-07-25 01:11:54 143

原创 排序-并归排序

思路:1、确定分界点(位置)mid = (l + r)/22、先递归排序左边和右边3、并归–>合二为一时间复杂度O(n)#include <iostream>using namespace std;const int N = 1000010;int n;int q[N], tmp[N];void merge_sort(int q[], int l, int r){ if (l >= r) return; int mid = l + r .

2021-07-25 00:45:10 74

原创 排序-快速排序

#include <iostream>using namespace std;const int N = 1e6 + 10;int n;int q[N];void quick_sort(int q[], int l, int r){ if(l >= r) return;//边界问题,如果只有一个数或者没有数字就不用排序了 int x = q[l], i = l - 1, j = r + 1;//两个指针:先把指针放到边界两侧外的一格。因为要先把.

2021-07-24 22:53:05 69

原创 《剑指 Offer》--- 跳台阶

描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。示例1输入:2返回值:2示例2

2021-07-20 16:41:40 44

原创 《剑指 Offer》--- 斐波那契数列

方法一、为了避免考虑整数溢出问题,我们求 c%109+7的值,递归:时间复杂度是 O(2^n)class Solution {public: int Fibonacci(int n) { if(n <= 1){ return n; } return (Fibonacci(n - 1) + Fibonacci(n - 2)) % 1000000007; }};方法二、递归+滚动变量。仔细观察我们

2021-07-20 13:42:01 48

原创 《剑指offer》----06. 从尾到头打印链表

输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1] //掌握编辑链表和数组的反转函数class Solution {public: vector<int> reversePrint(ListNode* head) { ListNode* p = head; //定义一个链表指向链表头 vector<int> ans;// 定义一个数组

2021-07-19 17:04:13 54

原创 《剑指offer》----05. 替换空格

请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = "We are happy."输出:"We%20are%20happy."限制:0 <= s 的长度 <= 10000class Solution {public: string replaceSpace(string s) { string ans; for(int i = 0 ; i<=s.size() ; i++) {

2021-07-19 16:08:20 45

原创 《剑指offer》----04. 二维数组中的查找

题目描述:在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30]]给定target =

2021-07-19 16:04:08 45

原创 《剑指offer》----找出数组中重复的数字

题目描述:在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3 限制:2 <= n <= 100000方法一、思路:1,先排序2、排序后比较第i个和i+1个数字,如果相等就输出第i个数字注意:因为是比较第i和i+1个数,所以索引范围到nums.size()-1就可以

2021-07-19 14:27:07 51

原创 华为机试-HJ16 购物单

描述王强今天很开心,公司发给N元的年终奖。王强决定把年终奖用于购物,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的,下表就是一些主件与附件的例子:如果要买归类为附件的物品,必须先买该附件所属的主件。每个主件可以有 0 个、 1 个或 2 个附件。附件不再有从属于自己的附件。王强想买的东西很多,为了不超出预算,他把每件物品规定了一个重要度,分为 5 等:用整数 1 ~ 5 表示,第 5 等最重要。他还从因特网上查到了每件物品的价格(都是 10 元的整数倍)。他希望在不超过 N 元(可以等于

2021-07-16 00:45:11 425 2

原创 华为机试-HJ15 求int型正整数在内存中存储时1的个数

方法一、思路:用&和>>来实现#include <iostream>using namespace std;int main (){ int num; cin >> num; int count = 0; while(num) { if(num & 1) count ++; num = num >> 1; } cout

2021-07-15 22:07:55 65

原创 华为机试-HJ14 字符串排序

方法一、#include<iostream>#include<string>#include<algorithm>using namespace std;bool cmp(string a,string b){ //return a.compare(b)<0; //升序 return a<b; //两个效果一样}int main(){ int n; cin>>n; string str

2021-07-15 21:24:07 86

原创 华为机试-HJ13 句子逆序

方法一、思路:1、首先用reverse函数反转所有字符2、再反转单个单词3、通过i和j定位单词首位#include <iostream>#include <algorithm>using namespace std;int main() { string str; getline(cin,str); reverse(str.begin(), str.end()); for(int i = 0 ; i < str.size()

2021-07-15 20:40:27 104

原创 华为机试-HJ12 字符串反转

思路:1、定义并输入字符串2、用reverse函数反转字符串#include<iostream>#include<algorithm>using namespace std;int main(){ string str; cin>>str; reverse(str.begin(),str.end()); cout<<str; return 0;}...

2021-07-15 19:27:54 41

原创 华为机试-数字颠倒

题目链接:传送门#include<iostream>using namespace std;int main(){ int a; cin>>a; while(a) { cout<<a%10; a=a/10; } return 0;}

2021-07-15 17:24:37 74

原创 华为机试-字符个数统计

方法一哈希表#include <iostream>#include <unordered_map>#include <string>using namespace std;int main (){ int sum = 0; unordered_map<char,int> hash;//hash[a] = 0; char c; while(cin >> c) hash[c] = 1;//有就是1,没有

2021-07-11 14:58:50 43

原创 华为机试-提取不重复的整数

#include <iostream>#include <unordered_map>using namespace std;int main(){ unordered_map <int, int> hash;//所有的值都会初始化为零 int num, out; cin >> num; while(num) { if(hash[num % 10 == 0])//num的最后一位等于零

2021-07-11 14:18:42 81

原创 华为机试-合并表记录

思路:1、先定义哈希表2、将key和value输入3、判断哈希表!= 0时输出i#include <iostream>#include <unordered_map>using namespace std;int main(){ int n; cin >> n; unordered_map<int, int> hash; while (n--) { int k, v; c

2021-07-10 19:56:03 70

原创 C++面试突击

C++面试突击第一章:编译内存相关一、C++ 程序编译过程面试高频指数:★★★★☆编译过程分为四个过程:编译(编译预处理、编译、优化),汇编,链接。编译预处理:处理以 # 开头的指令;编译、优化:将源码 .cpp 文件翻译成.s汇编代码;汇编:将汇编代码 .s 翻译成机器指令.o文件;链接:汇编程序生成的目标文件,即.o文件,并不会立即执行,因为可能会出现:.cpp 文件中的函数引用了另一个.cpp文件中定义的符号或者调用了某个库文件中的函数。那链接的目的就是将这些文件对应的目标文件连接成

2021-07-08 22:04:46 1903 1

原创 华为机试- 取近似值

取整的方式:头文件:#include <math.h>函数ceil(double x)向下取整eg:ceil(-11.5) == -11 ceil(1.5)== 1 ceil(-6.2) == -6 ceil(6.1) == 6函数 floor(double x)向上取整eg:floor(-11.5) == -12 floor(1.5) == 2 floor(-6.2) == -7 floor(6.1) == 7函数 round(double x)四舍五入eg

2021-07-07 11:23:09 51

原创 华为机试-质数因子

思路:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印即可。(2)如果n>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n,重复执行第一步。(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步#include <iostream>#include <math.h>using namespace std;int main(){ long n;

2021-07-07 11:00:50 113

原创 华为机试-进制转换

描述写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。输入描述:输入一个十六进制的数值字符串。注意:一个用例会同时有多组输入数据,请参考帖子[https://www.nowcoder.com/discuss/276]处理多组输入的问题。输出描述:输出该数值的十进制字符串。不同组的测试用例用\n隔开。#include <iostream>using namespace std;int main (){ string str; while(getlin

2021-07-06 22:37:30 152 1

原创 华为机试-字符串分隔

#include <iostream>#include<algorithm>using namespace std;int main(){ string str; while(getline(cin, str)) { //循环,输出前8个,截取9~最后 while(str.size() >8 ) { cout << str.substr(0, 8) <&lt

2021-07-06 22:00:27 225

原创 华为机试-明明的随机数

方法一、哈希表#include <iostream>using namespace std;int main() { int N, n; while (cin >> N) { int a[1001] = { 0 }; while (N--) { cin >> n; a[n] = 1; } for (int i = 0; i < 100

2021-07-06 19:42:40 93

原创 华为机试-计算某字母出现次数

思路:1、题目要求,字符串长度小于500,需先设置字符串长度限制2、将第一行的字符串输入3、将待检测的字母出入4、将待检测字母与输入字符串比较,如果相同count+1,最后输count注意:在比较的过程中方法一、if(str[i] == s||str[i] == s - 32 || str[i] == s + 32)因为不确定待检测字母的大小写,所以将三种形式都考虑在内。方法二、if(tolower(str[i] )== tolower(s)由于不区分大小写,所以可将字符串都转化为小写字母

2021-07-06 15:31:55 158

关于空间调制天线选择的程序.doc

近年来,空间调制(SM)的出现很好地解决了多输入多输出(MIMO)方案的不足,但也存在一定的弊端。该文结合了空间调制和天线选择的优势,回顾了基于欧氏距离最优(EDAS)和信道容量最优(COAS)这两种经典天线选择算法,并对EDAS算法进行了复杂度降低,分别介绍了基于奇异值分解(SVD)、星座图可分性和对称性(RLC-EDAS-SM)的方案,对它们的误比特率(BER)性能和复杂度进行了对比分析。由仿真结果可见,采用EDAS方案的空间调制技术相比于COAS方案、SVD方案和无天线选择的传统空间调制有较大的信噪比增益;而基于星座图可分性和对称性的复杂度降低方案误比特率性能几乎与EDAS方案一致,复杂度却得到了显著降低

2019-12-05

空空如也

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

TA关注的人

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