C语言双指针——经典题型
每天进步一点点,坚持带来大改变!!!
1.序列中删除指定数字
牛客网链接:
https://www.nowcoder.com/practice/7bbcdd2177a445a9b66da79512b32dd7?tpId=107&&tqId=33379&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-rankinghttps://www.nowcoder.com/practice/7bbcdd2177a445a9b66da79512b32dd7?tpId=107&&tqId=33379&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking
描述
有一个整数序列(可能有重复的整数),现删除指定的某一个整数,输出删除指定数字之后的序列,序列中未被删除数字的前后位置没有发生改变。
数据范围:序列长度和序列中的值都满足 1≤n≤50
输入描述:
第一行输入一个整数(0≤N≤50)。
第二行输入N个整数,输入用空格分隔的N个整数。
第三行输入想要进行删除的一个整数。
输出描述:
输出为一行,删除指定数字之后的序列。
示例1
输入:
6
1 2 3 4 5 9
4
输出:1 2 3 5 9示例2
输入:
5
1 2 3 4 6
5
输出:1 2 3 4 6
思路:
定义两个变量,都从数组下标为0的位置开始,i变量遍历整个数组,j变量用来存放不是被删除的元素,当i找到删除的元素之后i继续向后访问,j不加加,当不是要删除的元素的时候,将下标为i的元素存放到j下标,然后j继续加加。
#include<stdio.h>int main() {int n = 0;int arr[50] = { 0 };scanf("%d", &n);int i = 0;for (i = 0; i < n; i++){scanf("%d", &arr[i]);}int del = 0;int j = 0;scanf("%d", &del);for (i = 0; i < n; i++){if (arr[i] != del){arr[j++] = arr[i];}}for (i = 0; i < j; i++){printf("%d ", arr[i]);}return 0; }
2.序列中删除去重
牛客网链接:
https://www.nowcoder.com/practice/6564a2f6e70f4153ad1ffd58b2b28490?tpId=107&&tqId=33380&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-rankinghttps://www.nowcoder.com/practice/6564a2f6e70f4153ad1ffd58b2b28490?tpId=107&&tqId=33380&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking
描述
输入n个整数的序列,要求对这个序列进行去重操作。所谓去重,是指对这个序列中每个重复出现的整数,只保留该数第一次出现的位置,删除其余位置。
输入描述:
输入包含两行,第一行包含一个正整数n(1 ≤ n ≤ 1000),表示第二行序列中数字的个数;第二行包含n个整数(范围1~5000),用空格分隔。
输出描述:
输出为一行,按照输入的顺序输出去重之后的数字,用空格分隔。
示例1
输入:
5
10 12 93 12 75
输出:
10 12 93 75
思路:
#include<stdio.h>int main() {int n = 0;scanf("%d", &n);int arr[1000] = { 0 };int i = 0;for (i = 0; i < n; i++){scanf("%d", &arr[i]);}for (i = 0; i < n; i++){int j = 0;for (j = i + 1; j < n; j++){if (arr[i] == arr[j]){int k = 0;for (k = j; k < n - 1; k++){arr[k] = arr[k + 1];}n--;j--;}}}for (i = 0; i < n; i++){printf("%d ", arr[i]);}return 0; }
3.有序序列的合并:
牛客网链接:
https://www.nowcoder.com/practice/a9e943b0dab142759807d0cfb6863897?tpId=107&&tqId=33381&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-rankinghttps://www.nowcoder.com/practice/a9e943b0dab142759807d0cfb6863897?tpId=107&&tqId=33381&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking
描述
输入两个升序排列的序列,将两个序列合并为一个有序序列并输出。
数据范围:1≤n,m≤1000 , 序列中的值满足 :0≤val≤30000
输入描述:
输入包含三行,
第一行包含两个正整数n, m,用空格分隔。n表示第二行第一个升序序列中数字的个数,m表示第三行第二个升序序列中数字的个数。
第二行包含n个整数,用空格分隔。
第三行包含m个整数,用空格分隔。
输出描述:
输出为一行,输出长度为n+m的升序序列,即长度为n的升序序列和长度为m的升序序列中的元素重新进行升序序列排列合并。
示例1
输入:
5 6
1 3 7 9 22
2 8 10 17 33 44
输出:1 2 3 7 8 9 10 17 22 33 44
思路:
#include<stdio.h>int main() {int arr1[1000] = { 0 };int arr2[1000] = { 0 };int arr3[2000] = { 0 };int n = 0;int m = 0;scanf("%d%d", &n, &m);int i = 0;for (i = 0; i < n; i++){scanf("%d", &arr1[i]);}for (i = 0; i < m; i++){scanf("%d", &arr2[i]);}i = 0;int j = 0;int k = 0;while (i < n && j < m){if (arr1[i] < arr2[j]){arr3[k++] = arr1[i++];}else{arr3[k++] = arr2[j++];}}if (i == n){for (; j < m; j++){arr3[k++] = arr2[j];}}else{for (; i < n; i++){arr3[k++] = arr1[i];}}for (i = 0; i < n + m; i++){printf("%d ", arr3[i]);}return 0; }
C语言双指针——经典题型相关推荐
- java 品尝饮料,java细节经典题型
28. 选项中哪一行代码可以替换题目中//add code here 而不产生编译错误?() [java] view plaincopy 1. public abstract class MyClas ...
- 计算机书籍-Go语言入门经典SAMS Teach Yourself
书名:Go语言入门经典 作者:[英]乔治 奥尔波(George Ornbo) 出版社:人民邮电出版社 出版时间:2018年08月 去当当网了解
- c语言超级经典400道题目,C语言超级经典400道题目.doc
C语言超级经典400道题目1.C语言程序的基本单位是____ A) 程序行 B) 语句 C) 函数 D) 字符.C.1 2.C语言程序的三种基本结构是____ A.顺序结构,选择结构,循环结构 B.递 ...
- C语言成绩abc,C语言常用经典代码:求三角形的面积、把百分制成绩转换为ABC等级制、其两个自然数的最大公约数和最小公倍数...
C语言 经典常用代码 C语言常用经典代码 求三角形的面积. 把百分制成绩转换为ABC等级制. 其两个自然数的最大公约数和最小公倍数. 求输入n个数的平均值. 求一个数各个位上的数字之和. 求n个数的阶 ...
- pwn学习总结(五) —— 堆溢出经典题型整理
pwn学习总结(五) -- 堆溢出经典题型整理 fastbin + 栈溢出 fastbin + 函数构造 fastbin + 堆执行 fastbin + malloc_hook fastbin + 栈 ...
- pwn学习总结(三) —— 栈溢出经典题型整理
pwn学习总结(三) -- 栈溢出经典题型整理 ret2text ret2shellcode rop ret2libc 使用DynELF实现远程libc泄露 ret2syscall ret2libc ...
- c语言上机注意事项,计算机三级(C语言)上机考试题型总结与注意事项(讲解详细)...
计算机三级(C语言)上机考试题型总结与注意事项(讲解详细) C语言 三级上机考试题型总结与注意事项 按前面的分题型讲解,三级上机考试100道题被分为9大题型.每种题型在题库中占的比例也已经在题型名字后 ...
- C语言入门经典材料领走不谢!
小天从大学开始,便开启资料收集功能.近几年以大数据的飞速发展,计算机科技进入新的发展阶段,再加上日常的深入研究,小天收集整理了丰富的C语言资料,内容涵盖"入门经典","考 ...
- c语言入门经典案例,c语言入门经典案例及飞源代码.doc
c语言入门经典案例及飞源代码 循环控制输出图案 [程序1]题目:输出9*9口诀.1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列.2.程序源代码:#include "stdio.h ...
最新文章
- iOS 11开发教程(一)
- python编程工资-看到抖音上Python工程师晒得工资条,我沉默了......
- N 组连续子串最大和
- C语言选择排序(解析)
- 怎样健身最有效?程序员们可能还需要这些……
- 20155303 2016-2017-2 《Java程序设计》第四周学习总结
- 深度学习中 epoch,[batch size], iterations概念解释
- TQ210——下载总结
- 8 年后重登王座,Python 再度成为 TIOBE 年度编程语言
- RabbitMQ中7种消息队列和保姆级代码演示!
- pymongo 日期类型
- sklearn 特征降维利器 —— PCA TSNE
- java 中文车牌识别_EasyPR-Java开源中文车牌识别系统工程部署
- 调戏木马病毒的正确姿势-基础篇
- Android视频桌面,动态桌面开发
- CactiEZ V10.1安装及配置
- 【干货】火山视频去水印下载使用介绍
- 2021-7-19 fact函数求阶乘的用法
- 数字文化下的未来柔性团队
- 文心日签 | 春来有象,开工大吉
热门文章
- 风铃机器码修改器2.2单进程单ID硬件信息用于解除机器码硬件修改大师多开器部分游戏
- IDEA 断点:断点失效问题
- Onedrive如何同步文件夹
- 常见的IM开源服务器
- 将项目提交到码云时,异常: remote: [31mIncorrect username or password ( access token )[0m
- 移动互联应用开发基础知识简答
- Kubernetes源码下载以及go mod依赖解决
- Oracle 设置密码复杂度
- 穿透代理获取用户真实IP地址
- 【linux测试必背| tcpdump】命令行抓包神器 | tcpdump抓取post请求并显示详细参数