
Coding
luoyayun361
不积跬步无以至千里
展开
-
Coding:C++类定义实现部分成员函数
class String{public: String(const char *str = nullptr);//通用构造函数 String(const String &other); //拷贝构造函数 ~String(); String & operator() =(const String &rhs); //赋值函数private: char *m_data;};String::String(const char *str).原创 2021-04-19 23:43:12 · 332 阅读 · 0 评论 -
Coding:从给定数字集中找到最大的数字
描述从给定数字集中找到最大的数字,这些数字应以任何顺序相互附加以形成最大的数字。比如:输入: {10,68,75,7,21,12}输出: 77568211210分析这个题不能简单的将数组降序排列然后进行组合,排序后变成 {75,68,21,12,10,7} 组合成数字就不是最大数。思路:实现自定义比较器函数,对于两个数字x和y,将其转换成字符串,然后组合起来将 xy和yx进行比较,然后较大的数字将按顺序排在最前面。比如:对于 x=10 y=68,xy = 1068,yx=6810 ,然后原创 2021-04-11 08:38:02 · 402 阅读 · 0 评论 -
Coding:就地合并两个排序数组
描述给定两个大小分别为m和n的已排序的数组x和y,通过保持排序顺序将x的元素与y的元素合并。即用前m个最小元素填充x,其余元素填充y。要求就地完成,不能创建其他数据结构。如:输入:arrX = {2,5,8,10,15};arrY = {1,6,9}; 输出:arrX = {1,2,5,6,8};arrY = {9,10,15}; 分析这个问题的麻烦点在于不能创建新的数组,智能就地完成。思路:由于数组本身已经是有序的,那么我们通过循环将x数组每个元素与y数组的第一个元素进行原创 2021-04-10 23:34:48 · 253 阅读 · 0 评论 -
Coding:两个从大到小的有序链表合并成一个从小到大有序链表
要求请实现一个函数,把两个从大到小的有序链表合并成一个链表,新的链表是一个从小到大的有序链表。struct list{ int value; list* next;};list * merge (list *list1_head, list*list2_head);代码 list *merge(list *list1_head,list *list2_head) { list *newlist = NULL; list *curr原创 2021-03-07 14:28:45 · 662 阅读 · 0 评论 -
Coding: 一亿个数找最大的1000个数
描述一亿个数找最大的1000个数,要求效率高占用内存少。函数原型为:find_max_data(int* source_data, int* max_data),其中source_data是存放一亿个数的数组,max_data用于存放其中最大的1000个数。思路使用multiset的自动排序功能(默认从小到大排列),每次插入比最小数更大的值。代码// 从1亿个数中找到最大的1000个数void find_max_data(int *source_data, int length, int k)原创 2021-03-07 09:47:43 · 455 阅读 · 0 评论 -
Coding:取若干个1到n的整数可求和等于整数m,求出所有组合的个数
要求给定整数n,取若干个1到n的整数可求和等于整数m,编程求出所有组合的个数。比如当n=6,m=8时,有四种组合:[2,6], [3,5], [1,2,5], [1,3,4]。限定n和m小于120.0-1背包问题解法:#include <iostream>#include <vector>using namespace std;int main(){ int n,m; cin>>n>>m; vector<int&原创 2021-03-04 23:42:16 · 1442 阅读 · 0 评论 -
Coding: 整数反转
要求输入一个有符号整数,输出该整数的反转值。如:输入500,输出5输入 1234 ,输出4321输入-345,输出-543代码#include<iostream>using namespace std;int main(){ int in; cin >> in; int out = 0; while(in != 0) { out = out * 10 + in % 10; in /= 10原创 2021-03-04 22:20:13 · 228 阅读 · 0 评论 -
Coding: 2的N次方
描述对于一个整数N(512 <= N <= 1024),计算2的N次方并在屏幕显示十进制结果。输入描述:输入一个整数N(512 <= N <= 1024)输出描述:2的N次方的十进制结果输入:512输出:1340780792994259709957402499820584612747936582059239337772356144372176403007354697680187429816690342769003185818648605085375388281194原创 2021-03-03 23:09:11 · 399 阅读 · 0 评论 -
Coding:用指针的方法,将字符串首尾对调输出
代码/** * 用指针的方法,将字符串首尾对调输出 * 例如:输入 "ABCD1234efghij" * 输出:jihgfe4321DCBA * */#include <stdio.h>#include <string.h>#include <dos.h>int main(){ char str[] = "ABCD1234efghij"; int length = strlen(str); char *p1 =原创 2021-03-03 17:20:42 · 1495 阅读 · 0 评论 -
Coding:实现快速排序算法
代码void quick_sort(vector<int> & arr,int l,int r){ if(l >= r) return; int middle = l; for(int i = l; i < r; ++i){ if(arr[i] < arr[r]){ swap(arr[middle++],arr[i]); } } swap(arr[mid原创 2020-09-14 09:11:19 · 395 阅读 · 0 评论 -
Coding:实现memcpy函数
问题描述已知memcpy的函数为: void* memcpy(void* dest , const void* src , size_t count)其中dest是目的指针,src是源指针。不调用c++/c的memcpy库函数,请编写memcpy。代码void *memcpy(void *dest,const void *src,size_t count){ //安全检查 assert((dest != NULL) && (src != NULL));原创 2020-09-14 09:10:55 · 250 阅读 · 0 评论 -
Coding:在数组中查找具有给定总和的对
PS:没事儿做做题,预防老年痴呆~描述给定一个未排序的整数数组,找到其中有给定总和的一对数字。eg:输入:arr = [3,5,2,9,7,6,11,0] sum = 10输出:索引 0和4只要找到一对数字即可。方法一最简单也是最暴力的方法,用两个循环遍历数组,判断两个数字之和,如果符合条件则返回数组下标。该方法比较简单,但是时间复杂度为O(n^2),比较高。直接上代码,C++实现// 时间复杂度O(n^2) 空间复杂度 O(1)vector<int> find原创 2021-04-11 08:39:22 · 240 阅读 · 0 评论