
C
Ego_Bai
这个作者很懒,什么都没留下…
展开
-
C语言学习-使用宏求较大值/交换数的二进制奇偶位/左旋字符串。
1.使用宏实现两个数中求较大值。 2.使用宏将一个数二进制中的奇数位和偶数为进行交换。 3.实现一个函数,可以左旋字符串中的n个字符。 ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB#define _CRT_SECURE_NO_WARNINGS 1//使用宏实现两个数中求较大值。#include <stdio.h>#define max(a,b) a>b?a:bvo原创 2017-01-05 22:32:59 · 741 阅读 · 0 评论 -
算法题-实现一个函数用来匹配'.'和'*'的正则表达式
1.请实现一个函数用来匹配包括’.’和’‘的正则表达式。模式中的字符’.’表示任意一个字符,而’‘表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串”aaa”与模式”a.a”和”ab*ac*a”匹配,但是与”aa.a”和”ab*a”均不匹配 思路:递归实现串中子串迭代每次分别在string 和patt中取一个字符进行匹配,如果匹配,则...原创 2018-05-30 10:15:19 · 2138 阅读 · 0 评论 -
算法题-二维数组(杨氏矩阵)中查找一个整数是否存在
题目描述在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。二维数组实际上就是杨氏矩阵思路 这是一个非常常见的问题,总结下来一共三种方式:mlogn(m为行n为列)1.(暴力求解)两层循环嵌套开始逐个逐行遍历,时间复杂度O(m*n) 2.进化版.把每一行...原创 2018-05-30 11:52:35 · 18051 阅读 · 0 评论 -
算法题-调整数组顺序使奇数位于偶数前面
1.[编程题]调整数组顺序使奇数位于偶数前面 时间限制:1秒 空间限制:32768K输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。思路及解法:一.C++解法1.创建新数组(1) 先把原数组中的奇数push进去再把偶数push进去,然后用新数组数据覆盖...原创 2018-05-31 12:10:29 · 2411 阅读 · 0 评论 -
算法题-顺时针打印矩阵
2.顺时针打印矩阵顺时针打印矩阵[编程题]顺时针打印矩阵 时间限制:1秒空间限制:32768K输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.总结下来整体思路分为两大类:...原创 2018-05-31 12:55:43 · 635 阅读 · 0 评论 -
算法题-数组中重复的数字
[编程题]数组中重复的数字 时间限制:1秒 空间限制:32768K 题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。 解题思路找到任意重复的一个值并赋值...原创 2018-06-07 16:05:23 · 901 阅读 · 0 评论 -
算法题-两个链表的第一个公共结点
[编程题]两个链表的第一个公共结点 时间限制:1秒 空间限制:32768K 输入两个链表,找出它们的第一个公共结点。 给两个指针,”分别”从头到尾遍历”两个链表“,只要没遇到公共结点就继续遍历,最终两个指针到达 null 或者到达公共结点,返回之.C++/*struct ListNode { int val; struct ListNode *next...原创 2018-06-07 16:24:37 · 692 阅读 · 0 评论 -
算法题-求带环链表中环的入口结点
[编程|20分] 链表中环的入口结点 时间限制:C/C++ 1秒,其他语言 2秒空间限制:C/C++ 32768K,其他语言 65536K题目描述 一个链表中包含环,请找出该链表的环的入口结点。思路: 已知链表带环,那么我们便不需要判断链表带环与否,而主要关注找到环入口的方法:设置两个指针(pFaster, pSlower),初始值都指向头,pSlower每次前进一步,p...原创 2018-06-07 21:12:02 · 679 阅读 · 0 评论 -
算法题-删除链表中重复的结点
[编程|20分] 删除链表中重复的结点 时间限制:C/C++ 1秒,其他语言 2秒 空间限制:C/C++ 32768K,其他语言 65536K题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1-&gt;2-&gt;3-&gt;3-&gt;4-&gt;4-&gt;5 处理后为 1-&gt;2-&gt;5原创 2018-06-07 21:38:02 · 1517 阅读 · 0 评论 -
算法题-把数组排成最小的数
把数组排成最小的数 时间限制:1秒空间限制:32768K 算法知识视频讲解 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。思路一首先我们很容易想到全排列,但全排列时间复杂度为O(n!)。 所以在这里我们需要根据题意发现其中数学规律,然后定义一个规则...原创 2018-06-02 12:33:25 · 775 阅读 · 0 评论 -
算法题-和为S的连续正数序列
[编程题]和为S的连续正数序列 时间限制:1秒 空间限制:32768K 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列...原创 2018-06-02 12:36:27 · 357 阅读 · 0 评论 -
算法题-倒置字符串(逐词)
[编程题]倒置字符串 时间限制:1秒空间限制:32768K将一句话的单词进行倒置,标点不倒置。 比如 I like beijing. 经过函数后变为:beijing. like I 输入描述: 每个测试输入包含1个测试用例: I like beijing. 输入用例长度不超过100输出描述: 依次输出倒置之后的字符串,以空格分割\示例1输入 I like be...原创 2018-05-28 14:00:26 · 1508 阅读 · 1 评论 -
算法题-构建乘积数组
编程题]构建乘积数组 时间限制:1秒 空间限制:32768K 给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…A[i-1]*A[i+1]…*A[n-1]。不能使用除法。 1.剑指offer上的思路: B[i]的值可以看作下图的矩阵中每行的乘积。 下三角用连乘可以很容求得,上三角,从下向上也是连...原创 2018-06-09 17:18:13 · 742 阅读 · 0 评论 -
算法题-按照左右半区的方式重新组合单链表
[编程题]按照左右半区的方式重新组合单链表 时间限制:1秒 空间限制:32768K 给定一个单链表的头部节点head,链表长度为N。 如果N为偶数,那么前N/2个节点算作左半区,后N/2个节点算作右半区; 如果N为奇数,那么前N/2个节点算作左半区,后N/2+1个节点算作右半区; 左半区从左到右依次记为L1-&gt;L2-&gt;…,右半区从左到右依次记为R1-&gt;R2-&gt;...原创 2018-06-09 18:58:13 · 776 阅读 · 0 评论 -
算法题-二叉搜索树与双向链表
[编程题]二叉搜索树与双向链表 时间限制:1秒空间限制:32768K输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。思路: 非递归版本: 二叉树的中序遍历 中序遍历中每个结点的链接# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x...原创 2018-06-09 18:59:03 · 657 阅读 · 0 评论 -
Leetcode-convert-sorted-list-to-binary-search-tree(把有序链表转为二叉搜索树)
[编程题]convert-sorted-list-to-binary-search-tree 时间限制:1秒 空间限制:32768KGiven a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST. 思路:二分查找法每次需要找到中间...原创 2018-06-10 20:15:10 · 949 阅读 · 0 评论 -
算法题-rotate-list 旋转旋转
[编程题]rotate-list 时间限制:1秒 空间限制:32768K Given a list, rotate the list to the right by k places, where k is non-negative. For example: Given1-&gt;2-&gt;3-&gt;4-&gt;5-&gt;NULLand k =2, return4-...原创 2018-06-10 20:21:16 · 825 阅读 · 0 评论 -
GET和POST两种基本请求方法的区别
GET和POST是HTTP请求的两种基本方法GET - 从指定的服务器中获取数据POST - 提交数据给指定的服务器处理最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。(此部分参考自w3schools) - GET在浏览器回退时是无害的,而POST会再次提交请求。 - GET产生的URL地址可以被Bookmark,而POST不可以。 ...原创 2018-08-02 16:10:19 · 625 阅读 · 0 评论 -
算法题-字符串空格替换
描述 请编写一个方法,将字符串中的空格全部替换为“%20”。假定该字符串有足够的空间存放新增的字符,并且知道字符串的真实长度(小于等于1000),同时保证字符串由大小写的英文字母组成。 给定一个string iniString 为原始的串,以及串的长度 int len, 返回替换后的string。 测试样例: “Mr John Smith”,13 返回:”Mr%20John%20Smit...原创 2018-05-24 19:44:43 · 345 阅读 · 0 评论 -
算法题-字符串转换整数
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0 输入描述: 输入一个字符串,包括数字字母符号,可以为空输出描述: 如果是合法的数值表达则返回该数字,否则返回0示例1输入 +2147483647 1a33输出 2147483647 0class Solution{pu...原创 2018-05-24 19:49:08 · 389 阅读 · 0 评论 -
算法题-字符串旋转
对于一个字符串,和字符串中的某一位置,请设计一个算法,将包括i位置在内的左侧部分移动到右边,将右侧部分移动到左边。给定字符串A和它的长度n以及特定位置p,请返回旋转后的结果。测试样例: “ABCDEFGH”,8,4 返回:”FGHABCDE”正常解法1.用 “[ ]”按特定位置访问逐字符拷贝class StringRotation {public: string ...原创 2018-05-24 20:08:41 · 895 阅读 · 0 评论 -
C语言学习-模拟密码输入/大小写转换/计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100/按十进制位输出整数/ 整数1到100的中出现9的次数
1.编写代码模拟三次密码输入的场景。 2.编写一个程序,可以一直接收键盘字符,如果是小写字符就输出对应的大写字符,如果接收的是大写字符,就输出对应的小写字符,如果是数字不输出。3.计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值。4.输出一个整数的每一位。5.编写程序数一下 1到 100 的所有整数中出现多少次数字 9#define _CRT_SECURE_NO原创 2016-12-29 17:06:37 · 587 阅读 · 0 评论 -
C语言学习-猜数字游戏/折半查找。
1.完成猜数字游戏。 2.完成折半查找代码的编写和探索。#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>#include <time.h>void menu() //猜数字游戏{ printf("*******************************\n"); pri原创 2016-12-29 17:09:10 · 574 阅读 · 0 评论 -
c语言学习-打印菱形 /求三位水仙花数/求Sn=a+aa+aaa+aaaa+aaaaa
1.在屏幕上输出由*组成的菱形 2.求出所有三位数的水仙花数并输出 3.求Sn=a+aa+aaa+aaaa+aaaaa 前五项之和,a为一数字 4.编写程序,从标准输入读取C源代码,并验证所有的花号都正确成对出现#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<string.h>#include<math.h>int m原创 2016-12-29 17:25:34 · 895 阅读 · 0 评论 -
C语言练习-5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果
5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果 A选手说:B第一,我第三。 B选手说:我第二,E第四。 C选手说:我第一,D第二。 D选手说:C最后,我第三。 E选手说:我第四,A第一。 比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。#include <stdio.h> int main(){ int a = 0, b = 0, c = 0, d = 0原创 2017-02-03 17:08:24 · 696 阅读 · 0 评论 -
C语言练习—日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。以下为4个嫌疑犯的供词。
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。以下为4个嫌疑犯的供词。 A说:不是我。 B说:是C。 C说:是D。 D说:C在胡说 已知3个人说了真话,1个人说的是假话。 现在请根据这些信息,写一个程序来确定到底谁是凶手。int main(){ int killer = 'a';//此处把字符a赋给killer,在printf打印结果时,用%c直接输出原创 2017-02-03 17:38:20 · 981 阅读 · 0 评论 -
C 统计两个数相应的不同位(bit)
二进制中,统计两个数的相应位(bit)不同可以采用 1.异或操作, 故用异或运算结果 同0不同1 所以两个数异或的结果中1就是不同的位 然后逐位相与制成0 最后统计个数static int BitDiffer(int a, int b) { int m = a ^ b; int num = 0; while原创 2017-06-02 18:18:15 · 1367 阅读 · 0 评论 -
C输出乘法口诀表
第一次代码作业,最简单的输出乘法口诀表,也由于代码基础太差,出现了一万个语法错误效率极差,尽管如此简单的代码也用了将近半小时,希望以后能坚持下去,多练练总是好的^_^~ #include<stdio.h> int main()//用for循环嵌套实现 { int i,j;//全局变量 for(i=1;i<10;i++) { for(j=1;j<=i;j++)原创 2016-12-29 16:22:18 · 414 阅读 · 0 评论 -
C打印乘法表 、打印素数、判断闰年
第一次仅在课设空闲期间敲了一个最弱智的乘法口诀表,这次多尝试几个最基础问题的实现 包括 1. 打印99乘法表 2. 打印100~200之间的素数 3. 判断1000 - 2000年之间的闰年总共用时大概2小时,依然很慢很慢,期间少不了到处查阅,最后能完成就是好的,初学的枯燥要耐得住~ Aal Izz Well#include<stdio.h>#include<math.h>原创 2016-12-29 16:33:00 · 500 阅读 · 0 评论 -
不创建临时变量进行交换、求一组数中最大值、求二进制串中1的个数
尝试用多种方式解决问题,比较其优缺点 1. 给定两个整型变量的值,不创建临时变量将两个值的内容进行交换 2. 求十个数中的最大值 3. 写一个函数返回参数二进制中1的个数Aal Izz Well#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>//给定两个整型变量的值,将两个值的内容进行交换(不创建临时变量)int main()原创 2016-12-29 16:45:44 · 345 阅读 · 0 评论 -
11.27交换数组、获取二进制序列的奇偶位并输出、从大到小输出三个数、求最大公约数。
1.将数组A中的内容和数组B中的内容进行交换。(数组一样大)2.获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。3.将三个数按从大到小输出。4.求两个数的最大公约数。#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>int main(){ int i = 0; int A[] = { 1, 2, 3, 4,原创 2016-12-29 16:48:17 · 352 阅读 · 0 评论 -
算法题-数组中出现次数超过一半的数字(python)
1.数组中出现次数超过一半的数字数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如 输入一个长度为9的数组 {1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此 输出2。如果不存在则 输出0。1.利用dict.setdefault(key, default=None) 使用dic...原创 2018-05-26 12:47:00 · 1277 阅读 · 0 评论 -
算法题-找出字符串中第一个只出现一次的字符
找出字符串中第一个只出现一次的字符输入描述:输入一个非空字符串输出描述:输出第一个只出现一次的字符,如果不存在输出-1示例1输入 asdfasdfo输出 o思路,一般这种题指定用hashmap解决,把整个数组丢进一个hashtable中,以空间换时间,以追求最高效时间复杂度O(N),当然还有暴力两层遍历的O(N²),有时候 做之前就会...原创 2018-05-26 13:56:13 · 15901 阅读 · 3 评论 -
算法题-求链表中倒数第k个节点
时间限制:1秒 空间限制:32768K 本题知识点: 链表 题目描述输入一个链表,输出该链表中倒数第k个结点。思路1: 遍历两次数组,第一次先统计出来个数n,第二次再求出n-k+1,将求倒数第k节点的问题转化为正数第n-k+1的问题C++/*struct ListNode { int val; struct ListNode *next; ...原创 2018-06-03 20:34:34 · 465 阅读 · 0 评论 -
算法题-求数组中 连续子数组最大和
[编程题]连续最大和 . 热度指数:38075 时间限制:1秒 空间限制:32768K 算法知识视频讲解 一个数组有 N 个元素,求连续子数组的最大和。 例如:[-1,2,1],和最大的连续子数组为[2,1],其和为 3 输入描述: 输入为两行。 第一行一个整数n(1 &lt;= n &lt;= 100000),表示一共有n个元素 第二行为n个数,即每个元素,每个整数都...原创 2018-06-03 20:49:25 · 2635 阅读 · 0 评论 -
算法题-数组中的逆序对
[编程题]数组中的逆序对 时间限制:1秒空间限制:65536K在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007 输入描述: 题目保证输入的数组中没有的相同的数字数据范围:对于%50的数据,size&amp;amp;lt;=10^4对于%7...原创 2018-05-28 14:20:50 · 868 阅读 · 0 评论 -
算法题-反转单链表
[编程题]反转链表时间限制:1秒 空间限制:32768K输入一个链表,反转链表后,输出链表的所有元素。解法一.循环反转链表(非递归法) 整体思路就是,从原链表的头部一个一个取节点并插入到新链表的头部p始终指向要反转的结点newHead 指向反转后的首结点每反转一个结点,把p结点的next指向newHead, newHead再移动到P的位置成为反转后首结点, 再把p通过tmp...原创 2018-06-04 17:02:08 · 983 阅读 · 0 评论 -
算法题-合并两个排序的链表
[编程题]合并两个排序的链表时间限制:1秒 空间限制:32768K输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。主要思路1、本题很显然用递归方式很好实现,同时需要注意下算法的鲁棒性即——首先处理空链表,当其中一个为空链表时,直接输出另一个;当两个均为空链表时,输出null 2、比较 list1 和 list2 的头结点,较小的头结...原创 2018-06-04 17:24:36 · 703 阅读 · 0 评论 -
STL容器之删除元素,迭代器失效
一. 种类:标准STL序列容器:vector、string、deque和list。标准STL关联容器:set、multiset、map和multimap。非标准序列容器slist和rope。slist是一个单向链表,rope...原创 2018-09-12 11:42:03 · 741 阅读 · 0 评论