习题
indomitable@I
踏着层层阶梯攀登
展开
-
牛客网---从尾到头打印链表(多种解法)
题目描述输入一个链表,按链表从尾到头的顺序返回一个ArrayList。解法1:链表逆置struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};...原创 2020-04-20 13:14:43 · 129 阅读 · 0 评论 -
牛客网----替换空格
题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。思路:1.题目是将空格替换成%20,也就是把1个字符替换成3个字符,那每个空格后面的字符都要向后移,否则就会覆盖之前的字符2.如果从前往后找空格,那每找到一个,就要移动后面是字符,时间复杂度为O(N^2)3.不妨从后向前找,...原创 2020-04-20 10:09:27 · 144 阅读 · 0 评论 -
牛客网--链表分割
/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) {}};*/原创 2020-03-09 13:33:08 · 101 阅读 · 0 评论 -
牛客网---链表中倒数第K个结点
题目描述输入一个链表,输出该链表中倒数第k个结点。思路1:(效率慢)可以先遍历求出链表中有多少个结点,第二次再从前往后走,让count–,直到count=k,则找到了该结点。class Solution {public: ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) { unsigned count = 0...原创 2020-03-09 11:43:18 · 110 阅读 · 0 评论 -
牛客网--把字符串转换成整数
来源:牛客网题目描述将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0输入描述 :输入一个字符串, 包括数字字母符号, 可以为空输出描述 :如果是合法的数值表达则返回该数字,否则返回0示例1输入+21474836471a33输出21474836470思路:把第一个字符出现的情况单独处理下,再把后面的一起处理,得...原创 2020-02-23 13:30:09 · 185 阅读 · 0 评论 -
牛客网---不能使用乘除等条件,求1+2+3+...+n
题目:求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)解:1.创建n次对象,调用n次构造函数2.不能直接用数组创建n个对象(数组下标不能是变量),所以用new动态创建n个对象3.类内定义两个static变量(目的是对所有变量共享),一个自加一个累加,最后返回累加的结果4.每次计算前要清空上一次计算的结...原创 2020-02-07 19:29:04 · 146 阅读 · 0 评论 -
C语言:3种方法实现左旋字符串
题目:实现一个函数,可以左旋字符串中的k个字符。比如:ABCD左旋一个字符得到BCDA方法一:可以定义一个temp变量临时保存第一个字符,然后从第二个元素开始,依次往前移动,最后将第一个字符放到最后就好了,要左旋多少个就把之前步骤重复多少次注意:如果左旋次数多的话,有些中间的结果会和最终结果一样,所以求出有效左旋次数会优化些代码如下:void LeftMove(char *str,...原创 2019-12-02 18:08:23 · 273 阅读 · 0 评论 -
C语言:数组笔试题解析
关于这类题,我们需要了解一下基本内容sizeof 字符串开辟空间的大小,包括’\0’strlen 字符串长度,求的是字符串的有效个数,不包括’\0’数组名一般代表首元素的地址只有两种情况,代表整个数组的地址sizeof(数组名)单独使用时&数组名具体理解如下:一维数组:...原创 2019-11-26 15:33:48 · 449 阅读 · 0 评论 -
C语言:用函数指针数组实现转移表(计算器)
函数指针数组也是数组,数组的每一个成员是函数指针(这个指针指向函数)int main(){ int x, y; int input = 1; int result = 0; //定义一个函数指针数组 int (*a[])(int x,int y) = { 0, Add, Sub, Mul, Div, Mod }; while (input) { prin...原创 2019-11-25 21:53:01 · 192 阅读 · 0 评论 -
C语言:求二进制中1的个数(3种方法)
题目:写一个函数返回参数二进制中 1 的个数比如: 15-> 0000 1111 4 个 1程序原型:int count_one_bits(unsigned int value){// 返回 1的位数}介绍三种方法:方法一:取余求个数我们之前学过怎么样将十进制#include<stdio.h>#include<windows.h>#pragma...原创 2019-11-05 19:13:35 · 7846 阅读 · 3 评论 -
C语言:简单实现三子棋小游戏
三子棋游戏就是,假如有玩家A、B在一个棋盘下棋,一人一步轮换,谁先将三个相同的棋子连成一条线,谁就赢了下面具体介绍游戏的实现:game.h#ifndef _GAME_H_#define _GAME_H_#pragma warning(disable:4996)#include<stdio.h>#include<windows.h>#include<s...原创 2019-10-29 21:41:06 · 378 阅读 · 0 评论 -
C语言 : 编写代码模拟三次密码输入的场景
题目:编写代码模拟三次密码输入的场景。最多能输入三次密码,密码正确,提示“登录成功”, 密码错误,可以重新输入,最多输入三次。三次均错,则提示退出程序。代码如下:#include<stdio.h>#include<stdlib.h>#include<string.h>int main(){ char arr1[8] = "ab12345";...原创 2019-01-21 18:54:04 · 329 阅读 · 0 评论 -
C语言:有关递归、非递归的题
7.递归方式实现打印一个整数的每一位void print(int n){ if (n > 9) print(n / 10); printf("%d “, n % 10); }int main(){ int n = 0; printf(“请输入你要打印的数:>\n”); scanf(...原创 2019-10-22 17:57:29 · 266 阅读 · 0 评论 -
C语言:猜数字游戏
void menu(){ printf("*****************************\n"); printf("***** 1.play 2.exit *****\n"); printf("*****************************\n");}void play(){ int ret=rand()%100+1; int num = 0; ...原创 2019-10-22 00:03:06 · 100 阅读 · 1 评论 -
C语言:求出0~999之间的所有“水仙花数”并输出
我们需要知道什么是水仙花数“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;153=1+5+3,则153是一个“水仙花数”。#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<math.h>int main(){ int n = 0...原创 2019-10-21 23:44:05 · 187 阅读 · 0 评论 -
C语言:输出1-100之间的奇数
奇数就是不被2整除的数,eg:1、3、5…直接想的也是这个,用函数写吧!方法一:#include<stdio.h>#include<stdlib.h>#pragma warning(disable:4996)void PrintNum(int i){ for (i = 1; i <= 100; i++) { if (i % 2 == 0) c...原创 2019-10-15 23:46:36 · 3482 阅读 · 0 评论