基础编程题
文章平均质量分 58
编程基础问题
CodingStart
Sometimes there is no next time, no time-outs, no second chances; sometimes it's now or never.
展开
-
全局变量可以声明定义在头文件中吗?
头文件中不可以放变量的定义!!!一般情况下头文件中只放变量的声明,因为头文件要被其他文件包含(即#include),如果把定义放到头文件的话,就不能避免多次定义变量,C++不允许多次定义变量,一个程序中对指定变量的定义只有一次,声明可以无数次。三种例外:1.值在编译时就已知的const 变量的定义可以放到头文件中如:const int num(10);2.类的定义可以放到头文件中3.inline 函数这三个实体可以定义在多个源文件中,只要在每个源文件中的定义相同。原创 2021-03-16 09:28:44 · 4300 阅读 · 0 评论 -
1-2+3-4+5...+n各种解法
在书上看到这个提的几种解法 , 前面的一种很简单 , 随着越来越考虑效率问题 , 那么难点就出来了, 希望读者和我一样能有所获。long fn(int num){ if (num <= 0) assert(false); int n = 0; int flag = 1; int i = 1; while (i <= num) { n += flag*i++; flag原创 2016-09-16 16:49:08 · 3899 阅读 · 0 评论 -
数组元素的全排列
这个题目,今天看了好久,也算是终于把它搞定了,特此记录!!!就像排列组合一样,将数组元素所有可能的结果全部排列,并显示出来。今天说一个特别 有逼格的 方法: 递归实现全排列void Perm(int* arr, int size, int n){ if (n == size-1) { for (int index = 0; index < size; ++index) {原创 2016-07-13 00:03:21 · 1253 阅读 · 0 评论 -
C语言排序之二分查找
对于二分法查找一个数据中的数字原创 2016-05-08 15:36:39 · 2687 阅读 · 0 评论 -
辗转相除法
两个数的最大公约数是指能同时整除它们的最大正整数。辗转相除法的基本原理是:两个数的最大公约数等于它们中较小的数和两数之差的最大公约数。例如,252和105的最大公约数是21(252 = 21 × 12;105 = 21 × 5);因为252 − 105 = 147,所以147和105的最大公约数也是21。在这个过程中,较大的数缩小了,所以继续进行同样的计算可以不断缩小这两个数直至其中一个变成零原创 2016-09-04 13:31:00 · 550 阅读 · 0 评论 -
编写函数 unsigned int reverse_bit(unsigned int value); 这个函数的返回值吧value的二进制位模式从左到右翻转后的值。
unsigned int reverse_bits(unsigned int value);这个函数的返回值是把value的二进制位模式从左到右变换一下后的值。例如,在32位机器上,25这个值包含下列各个位: 00000000 00000000 00000000 00011001函数的返回值应该是2 550 136 832,它的二进制位模式是: 10011000 00000000 00000000 00000000原创 2016-06-30 13:37:38 · 823 阅读 · 0 评论 -
喝汽水问题
一块钱买一瓶汽水,喝完后两个空瓶子可以换一瓶汽水,问:你有20块钱,最多能喝多少瓶汽水?原创 2016-06-30 11:42:53 · 687 阅读 · 1 评论 -
猴子吃桃问题
猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少个桃子?转载 2016-06-13 11:10:26 · 609 阅读 · 0 评论 -
判断一个数是否是回文数
判断是否是回文数原创 2016-06-08 17:01:31 · 580 阅读 · 0 评论 -
找出数组中只出现一次的2个数字
一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。找出这两个数字原创 2016-04-24 00:43:04 · 727 阅读 · 1 评论 -
三步翻转法------有意思的方法
主要是为了三步翻转法,原创 2016-04-17 20:38:46 · 2491 阅读 · 0 评论 -
经典面试题---求两个数字的较大值的另类解法
有两个变量a 和 b , 不使用 “if” ,"switch" , "? :" 或者其他判断语句 ,找出两个数中较大的。原创 2016-08-12 18:04:08 · 1005 阅读 · 0 评论 -
数组中出现次数超过一半的数字
题目:数组中有一个数字出现次数超过数组长度的一半,请找出这个数字。例如输入长度为9的数组{1,2,3,2,2,2,5,2,3}。由于数字2在数组中出现了5次,超过数组的一半,因此输出2。思路1:如果我们考虑对数字进行排序,那么排序之后中间的数字一定是出现次数超过数组长度一半的数字。也就是,我们所说的“中位数 ”。考虑到我们并非一定要把整个数组排序完成,受到快速排序的partat原创 2016-10-04 18:41:46 · 335 阅读 · 0 评论 -
第一次出现一次的字符
题目:在字符串中找到第一个只出现一次的字符。例如:输入“abcdbbcdd” , 则输出‘a’。思路:最直观的想法就是从头遍历扫描字符串中的每一个 字符。当访问到某一个字符是=时和后面的每一个字符比较,如果没有重复的,那么这个字符就是出现一次的字符。这种思路的时间复杂度O(n2)。今天我们在探讨一种更快的方法。考虑到题目是与次数相关的,那么我们就统计每个字符出现的次数,并且存放下来原创 2016-10-04 22:59:34 · 525 阅读 · 0 评论 -
最小的k个数
题目:输入n个正整数,找出其中最小的k个数。例如:输入 1 3 5 7 9 8 2 其中 最小的3个数字是 1 2 3思路1:就像前面的快排一样 , 那我们可以找到前k个最小的数字(但是不保证最小数字是有序的)code1:int partation(int* numbers, int length, int begin, int end){ if (begin原创 2016-10-04 21:47:00 · 411 阅读 · 0 评论 -
二叉树转换成双向链表
将一个二叉树转换为一个双向链表。要求不能创建新的节点,只能调整节点的指针。原创 2016-10-04 11:23:47 · 3140 阅读 · 0 评论 -
查找二叉树中和为某一个值的路径
题目:输入一颗二叉树和一个整数,打印出二叉树节点中节点值的和为输入整数的所有路径 。从树的根节点往下所经过的节点的形成的路径。思路:先序遍历的方式访问某一个节点时,把该节点添加到路径上,并且累加节点中的值。如果当前节点时叶节点并且累加的值等于输入的值,那么我们就把这条路径打印出来。如果不是叶节点,那么就访问当前节点的左右子树。当前节点的左右子树都访问完了,那么久返回到父节点,(在返原创 2016-10-03 21:56:25 · 970 阅读 · 0 评论 -
从上到下打印二叉树——层序遍历二叉树
在几次笔试的过程中,都提到了二叉树层序遍历 ,那么我就好好整理下 题目:从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。例如输入: 8 / \ 6 10 /\ /\ 5 7 9 11输出8 6 10 5 7 9 11。二叉树节点定义:原创 2016-10-03 20:23:44 · 948 阅读 · 0 评论 -
打印1到最大的n位数
题目:输入数字n,按顺序打印从1到最大的n位十进制数。比如输入3 ,则打印1,2,3 一直到999当然有程序员会很容易想出一个答案:循环数字相乘-->打印仔细分析:如果相乘的数字溢出怎么办?那我们就得另外想办法了。code:void Print_1_To_Max(int n){ if (n <= 0) return; char *number = new原创 2016-10-03 11:11:21 · 312 阅读 · 0 评论 -
求数值的的整数次方(模拟实现pow函数)
求数值的的整数次方:实现double Power(double base , int exponent),求base的ponent次方。不能使用库函数,同时不考虑大数问题自以为很简单的解法:double Power(double base, int exponent){ double result = 0.0; for (int i = 1; i <= exponent;原创 2016-10-02 16:55:11 · 1180 阅读 · 0 评论 -
旋转数组的最小数字
题目:把一个数组最开始的若干个元素搬到数组的末尾 , 我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如:数组{3,4,5,1,2}是{1,2,3,4,5}的一个旋转,该数组最小值是1。int Min(int arr[], int len){ if (NULL == arr || len <= 0) throw std::exceptio原创 2016-10-02 14:50:29 · 296 阅读 · 0 评论