| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> C语言:刷题总结(3) -> 正文阅读 |
|
[数据结构与算法]C语言:刷题总结(3) |
C语言的学习告一段落,本文是对近期学习C语言的刷题总结,题目大部分来自牛客网&力扣。 本篇文章是C语言本阶段的最后一篇文章,结束了几个月的学习,接下来会写一些关于Java的博客,后面有机会的话还会再继续来完善C语言内容。 题目十五:数对题目描述:一个正整数数对(x,y),x和y的值均不大于n,并且x%y的值大于等于k。 输入描述:输入包括两个正整数n, k(1 <= n <= 10 ^ 5, 0 <= k <= n - 1)。 思路:一开始的想法是直接用两个循环暴力求解出符合的数对个数,但是时间复杂度过大,所以编译不通过。这里通过一个例子来引出另一种思路:?假设输入 n=10 , k=3 ; 实现代码:
题目十六:旋转字符串问题——左旋转字符串题目描述:输入k,输出左旋转k个字符后的字符串 思路一:常规方法,将第一个字符存起来,其他字符都向前移动一位,最后将存起来的那个字符复制到最后,依次循环k次,就可以得出结果 实现代码:
思路二:三逆序实现旋转,假如是旋转k位,则在第k位的位置将这个字符串分隔为两个字符串,然后将这两个字符串分别逆序,最后再将整个字符串逆序一遍,也可以得出结果 实现代码:
题目十七:杨氏矩阵题目描述:有一个三维数组,数组的每行从左到右是递增的,每列从上到下是递增的.。在这个的数组中查找一个数字是否存在。 思路:本题最简单、最暴力的思路就是直接把整个三维数组遍历一遍,但是有时候是不能够通过测试用例的,这里介绍一种时间复杂度较低的且比较常规的思路——三维杨氏矩阵九个元素中只有两个元素是符合的(斜对角线顶点的两个元素,也就是第一行第三列和第三行第一列的两个元素),选其中的任意一个都可以,这里我用第一行第三列的元素(暂且称之为k)来实现,如果查找的数小于k的值,那么就来k前面的两个元素查找即可,如果是大于k的值,那么则找本列下一行的元素,再重复上面的比较,直到找到所要查找的元素,返回该元素坐标,如果查找是超出三维数组的界限,那么则可以判断该数组中并无这个数。 实现代码:
题目十八:找单身狗题目描述:一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。编写一个函数找出这两个只出现一次的数字。 思路:我们在前面的题目中就已经知道:只需要把数组中的所有数都异或在一起,就可以找出数组中只出现一次的数字。但是这道题相对于之前的那道题,还是有不同之处的,总体来说也会增加一个难度,因为该题是要找出数组中两个只出现一次的数字,乍一看,感觉还是挺类似的,但是仔细想想,如果像之前那样全部异或起来的话,只能够得出一个错误的值,所以这里就想到一个思路——就是将这个数组分为两部分,把两个只出现一次的数字分别分到两个组里面去,然后分别异或找出来即可。那么该如何识别出并将两个数分到两个组里面去呢?第一步,将数组中全部数字都异或起来;第二步,寻找异或之后的二进制有那个位按位与1之后值是1,是1则可以说明这两个只出现一次的数字在二进制中这一位是不相同的,相异或之后才会是1;第三步,将二进制中以刚才得出的不同位为准,就可以将这些数字分为两组,这两个只出现一次的数字分在不同组中了。这样就可以得出最后的结果。 实现代码:?
题目十九:判断字符串是否是另一字符串旋转得来的题目描述:判断字符串是否是另一字符串旋转得来的 思路:大多数人受之前旋转字符串代码的影响,对这道题的第一想法应该都是先旋转字符串再来进行判断是否相等,如此循环。但是对于这道题还有一种更加简便的方法——拷贝自身字符串并添加到后面的位置,再通过字符串查找,来判定是否存在,进而解决这道题。 实现代码:
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/29 12:42:58- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |