【C语言&&数据结构】简单题目

这篇具有很好参考价值的文章主要介绍了【C语言&&数据结构】简单题目。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

✨作者:@平凡的人1

✨专栏:《小菜鸟爱刷题》

✨一句话:凡是过往,皆为序章

✨说明: 过去无可挽回, 未来可以改变


  • 为了方便自己的学习以及基于好久没更新博客的原因。特地写了这一篇博客。💖

  • 本篇博客是一篇记录学习篇,我将之归纳于刷题专栏。方便自己的复习以及分享一些自己的学习过程。💧

  • 如果你觉得有错误的地方,一定要及时地告诉我哦,毕竟博主能力有限,请多多指教呀😄


下面我们进入今天的主题👇

Leetcode简单题

258.各位相加

给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。返回这个结果。

示例 1:

输入: num = 38
输出: 2
解释: 各位相加的过程为:
38 --> 3 + 8 --> 11
11 --> 1 + 1 --> 2
由于 2 是一位数,所以返回 2。
示例 1:

输入: num = 0
输出: 0

提示:

0 <= num <= 231 - 1

来源:力扣(LeetCode)

我们可以先想一想:如果一个数是小于10的话,那就直接返回即可。当大于10时候:比如例子中的38,把各位求出来相加之后还是大于10的,我们还是要继续重复求出各个位,知道相加是小于10的这个过程。

解题思路:基于此,我们可以通过两层循环:里面一层可以用来计算第一次的各位相加之和,外面一层在来计算所得和如果大于10的过程。知道算出最终的结果。下面实现代码

【C语言&&数据结构】简单题目

这里要注意的就是第一次算完之后sum要重置为0,在继续算下去,下面进行提交运行:

【C语言&&数据结构】简单题目

263.丑数

丑数 就是只包含质因数 2、3 和 5 的正整数。

给你一个整数 n ,请你判断 n 是否为 丑数 。如果是,返回 true ;否则,返回 false 。

示例 1:

输入:n = 6
输出:true
解释:6 = 2 × 3
示例 2:

输入:n = 1
输出:true
解释:1 没有质因数,因此它的全部质因数是 {2, 3, 5} 的空集。习惯上将其视作第一个丑数。
示例 3:

输入:n = 14
输出:false
解释:14 不是丑数,因为它包含了另外一个质因数 7 。

来源:力扣(LeetCode)

直接去判断这个数是否能够整除质因数2、3、5,能够整除的话,继续让这个数除以对应的质因数,知道最后,判断是否能够等于1,等于1的话就是丑数,不等的话就不是丑数。比如例子中的6,能够整除2,继续除以2等于4,又能够整除2,继续除以2,又能够整除2,最终得到结果1。下面实现并提交运行代码:

【C语言&&数据结构】简单题目

283.移动0

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

请注意 ,必须在不复制数组的情况下原地对数组进行操作。

示例 1:

输入: nums = [0,1,0,3,12]
输出: [1,3,12,0,0]
示例 2:

输入: nums = [0]
输出: [0]

来源:力扣(LeetCode)

解题思路:第一次去遍历数组中不等于0的数,放在数组中,第二次去遍历:从第一次遍历完成的下标开始,直接让后面(小于数组的长度)的数等于0即可完成题目的要求。下面实现并提交代码:

【C语言&&数据结构】简单题目

不过这种做法感觉效率太低了一点😥 不过我就是这么菜

326.3的幂

给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true ;否则,返回 false 。

整数 n 是 3 的幂次方需满足:存在整数 x 使得 n == 3x

示例 1:

输入:n = 27
输出:true
示例 2:

输入:n = 0
输出:false
示例 3:

输入:n = 9
输出:true
示例 4:

输入:n = 45
输出:false

来源:力扣(LeetCode)

感觉这种题真的有一种规律,就像上面263.丑数的思路一样,如果能够整除3的话,那就让这个数继续去除以3,最后再去判断是否等于1即可。由此类推,4的幂也不难求解。下面实现代码及提交运行代码:

【C语言&&数据结构】简单题目

367.有效的完全平方数

给定一个 正整数 num ,编写一个函数,如果 num 是一个完全平方数,则返回 true ,否则返回 false 。

进阶:不要 使用任何内置的库函数,如 sqrt 。

示例 1:

输入:num = 16
输出:true
示例 2:

输入:num = 14
输出:false

来源:力扣(LeetCode)

字面意思,直接for循环走起来即可,同时要注意到变量的类型,防止溢出

下面进行实现代码,提交运行:

374.猜数字大小

猜数字游戏的规则如下:

每轮游戏,我都会从 1 到 n 随机选择一个数字。 请你猜选出的是哪个数字。
如果你猜错了,我会告诉你,你猜测的数字比我选出的数字是大了还是小了。
你可以通过调用一个预先定义好的接口 int guess(int num) 来获取猜测结果,返回值一共有 3 种可能的情况(-1,1 或 0):

-1:我选出的数字比你猜的数字小 pick < num
1:我选出的数字比你猜的数字大 pick > num
0:我选出的数字和你猜的数字一样。恭喜!你猜对了!pick == num
返回我选出的数字。

示例 1:

输入:n = 10, pick = 6
输出:6
示例 2:

输入:n = 1, pick = 1
输出:1
示例 3:

输入:n = 2, pick = 1
输出:1
示例 4:

输入:n = 2, pick = 2
输出:2

来源:力扣(LeetCode)

刚开始一直看不懂题目在说啥(好吧,没认真看题目)。

就是已经提供了一个函数接口guess(int num)然后我们去判断大小,这其实就是在找一个数,我们可以用二分查找的思想来解决这个题目,不说了,直接实现。下面实现代码并提交运行:

【C语言&&数据结构】简单题目

【C语言&&数据结构】简单题目

414.第三大的数

给你一个非空数组,返回此数组中 第三大的数 。如果不存在,则返回数组中最大的数。

示例 1:

输入:[3, 2, 1]
输出:1
解释:第三大的数是 1 。
示例 2:

输入:[1, 2]
输出:2
解释:第三大的数不存在, 所以返回最大的数 2 。
示例 3:

输入:[2, 2, 3, 1]
输出:1
解释:注意,要求返回第三大的数,是指在所有不同数字中排第三大的数。
此例中存在两个值为 2 的数,它们都排第二。在所有不同数字中排第三大的数为 1 。

来源:力扣(LeetCode)

==直接从大到小排序,然后输出第三个数即可???==❌

因为数组中可能含有相同的数字,这就需要我们去处理一下了:排序完之后,我们可以定义一个计算器,如果不相邻的话,让count++,知道count==3即可输出:

【C语言&&数据结构】简单题目

提交运行代码:

【C语言&&数据结构】简单题目

509.斐波那契数

斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:

F(0) = 0,F(1) = 1
F(n) = F(n - 1) + F(n - 2),其中 n > 1
给定 n ,请计算 F(n) 。

来源:力扣(LeetCode)

无需多言,直接实现:

【C语言&&数据结构】简单题目

520.检测大写字母

我们定义,在以下情况时,单词的大写用法是正确的:

全部字母都是大写,比如 “USA” 。
单词中所有字母都不是大写,比如 “leetcode” 。
如果单词不只含有一个字母,只有首字母大写, 比如 “Google” 。
给你一个字符串 word 。如果大写用法正确,返回 true ;否则,返回 false 。

示例 1:

输入:word = “USA”
输出:true
示例 2:

输入:word = “FlaG”
输出:false

来源:力扣(LeetCode)

那就把三种情况罗列出来不就行了:

不过我们需要借助一个计算器count,if(全部大写count== strlen(word) || 全部都不是大写count == 0 || 只有一个大写,且在首位置count == 1&& word>=‘A’&&word<=‘Z’)

实现代码并提交运行:

【C语言&&数据结构】简单题目

1295.统计位数为偶数的数字

给你一个整数数组 nums,请你返回其中位数为 偶数 的数字的个数。

示例 1:

输入:nums = [12,345,2,6,7896]
输出:2
解释:
12 是 2 位数字(位数为偶数)
345 是 3 位数字(位数为奇数)
2 是 1 位数字(位数为奇数)
6 是 1 位数字 位数为奇数)
7896 是 4 位数字(位数为偶数)
因此只有 12 和 7896 是位数为偶数的数字
示例 2:

输入:nums = [555,901,482,1771]
输出:1
解释:
只有 1771 是位数为偶数的数字。

来源:力扣(LeetCode)

首先去实现一个函数判断一个数的位数是否为偶数,然后去遍历整个数组,如果是偶数的话加起来就行了:

【C语言&&数据结构】简单题目

提交运行:

【C语言&&数据结构】简单题目

1346.检查整除及其两倍数是否存在

给你一个整数数组 arr,请你检查是否存在两个整数 N 和 M,满足 N 是 M 的两倍(即,N = 2 * M)。

更正式地,检查是否存在两个下标 i 和 j 满足:

i != j
0 <= i, j < arr.length
arr[i] == 2 * arr[j]

示例 1:

输入:arr = [10,2,5,3]
输出:true
解释:N = 10 是 M = 5 的两倍,即 10 = 2 * 5 。
示例 2:

输入:arr = [7,1,14,11]
输出:true
解释:N = 14 是 M = 7 的两倍,即 14 = 2 * 7 。
示例 3:

输入:arr = [3,1,7,11]
输出:false
解释:在该情况下不存在 N 和 M 满足 N = 2 * M 。

来源:力扣(LeetCode)

作为一个菜鸟,我想到的是两层for循环解决:

【C语言&&数据结构】简单题目

数据结构基础选填题

选择题

【C语言&&数据结构】简单题目

众所周知,单链表并不能像顺序表一样能够随机存取,访问元素是需要去遍历一遍的。

【C语言&&数据结构】简单题目

下标从0到29,数组的大小就是30,(25+11)%30=6

【C语言&&数据结构】简单题目

栈貌似和递归的原理是一样的,栈是后进先出,递归何尝不是

【C语言&&数据结构】简单题目

根据栈先进后出的原理,我们可以知道,s1进去之后就出来了,然后s2.s3.s4连续进去又变成s6了,所以栈的容量至少来说应该是3

【C语言&&数据结构】简单题目

循环队列中,我们来分析一波:

循环队列在队尾增加元素,在队头删除元素。 删除一个元素:front=(front+1)%6,结果为4。增加两个元素,real=(real+2)%6, 结果为2

【C语言&&数据结构】简单题目

元素49会与38发生冲突,39在位置3,所以49要往后移动,在位置4

【C语言&&数据结构】简单题目

画出分离链接法处理冲突时的散列表,在根据散列表计算即可

【C语言&&数据结构】简单题目

有中序和先序就可以构造出一颗二叉树,我们知道,在先序中可以找到根结点,在中序中能够以根节点分为左右子树即可,重复下去,然后在根据二叉树写出后序遍历即可

【C语言&&数据结构】简单题目

根据权值找最小的即可

【C语言&&数据结构】简单题目

设T是由n个结点构成的二叉树,其中,叶子结点个数为n0,次数为2的结点个数为n2,则有: n0=n2+1 所以结点个数:叶子结点(5)+次数为1的结点(3)+次数为2的结点(4) = 12

【C语言&&数据结构】简单题目

对于n个顶点的简单无向图,每个顶点最多与其余的n-1个结点邻接,因此,最多有n(n-1)条边

【C语言&&数据结构】简单题目

简单理解:广度优先用队列,深度优先用栈

【C语言&&数据结构】简单题目

【C语言&&数据结构】简单题目

6+5+4+3+2+1

【C语言&&数据结构】简单题目

构造AVL进行调整旋转即可知道答案

填空题

【C语言&&数据结构】简单题目

【C语言&&数据结构】简单题目

【C语言&&数据结构】简单题目

【C语言&&数据结构】简单题目

【C语言&&数据结构】简单题目

【C语言&&数据结构】简单题目

【C语言&&数据结构】简单题目

总结

好了,本次博客就是简单记录一下一些我的学习过程,然后最近也挺忙的把,等到暑假博主会持续输出的,如果对你有所帮助,觉得还可以的话,不要忘记了收藏哦,本次就先到这里结束了!🌹文章来源地址https://www.toymoban.com/news/detail-400595.html

到了这里,关于【C语言&&数据结构】简单题目的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据结构-栈(C语言简单实现)

    栈是一种数据结构 栈可以用来存放数字 一次只能向栈里加入一个数字,一次也只能从栈里获得一个数字 栈里到的数字有前后顺序,先进入到的数字在前,后进入的数字在后 每次从栈里获取的数字一定是最后面的数字,最后获取的数字一定是最前面的数字 这种取数字的方法

    2024年02月13日
    浏览(38)
  • 数据结构初阶(用C语言实现简单数据结构)--栈和队列

    ✨✨欢迎来到T_X_Parallel的博客!!       🛰️博客主页:T_X_Parallel       🛰️专栏 : 数据结构初阶       🛰️欢迎关注:👍点赞🙌收藏✍️留言 这小猫真好看 言归正传,通过上篇有关顺序表和链表的博客,可以了解到线性表的一些大致特征,这篇博

    2024年02月08日
    浏览(40)
  • 【数据结构和算法初阶(C语言)】复杂链表(随机指针,随机链表的复制)题目详解+链表顺序表结尾

    目录  1.随机链表的复制 1.2题目描述  1.3题目分析 1.4解题: 2.顺序表和链表对比 2.1cpu高速缓存利用率 3.结语 一个长度为  n  的链表,每个节点包含一个额外增加的随机指针  random   该指针可以指向链表中的任何节点或空节点。        构造这个链表的  深拷贝 。 深拷贝

    2024年03月10日
    浏览(83)
  • 数据结构-队列(C语言的简单实现)

    队列也是一种数据结构,队列也可以用来存放数字 每次只能向队列里将入一个数字,每次只能从队列里获得一个数字 在队列中,允许插入的一段称为入队口,允许删除的一段称为出队口 它的原则是先进先出(FIFO: first in first out),先进入队列的数据先出去,后进入的后出去。

    2024年02月13日
    浏览(45)
  • c语言及数据结构实现简单贪吃蛇小游戏

    目录 一·贪吃蛇简单介绍: 二·贪吃蛇的实现的开始准备: 2.1:欢迎界面的实现: 2.2地图的绘制: 2.3.1初始化蛇: 2.3.2初始化食物:  三·贪吃蛇的运行操作: 3.1辅助信息的打印: 3.2蛇的下一步移动操作: 3.2.1判断玩家按键情况: 3.2.2下一步遇到食物: 3.2.3下一步不是食物:

    2024年04月27日
    浏览(54)
  • C语言简单的数据结构:单链表的有关算法题(2)

    接着我们介绍后面的三道题,虽然代码变多了但我们的思路更加通顺了 题目链接:https://leetcode.cn/problems/merge-two-sorted-lists/ 创建新链表,遍历原链表,将节点值小的进行尾插到新链表中 这里要多次进行对NULL的判断,开始传入列表,中间newHead的判断,循环出来一个为NULL的判断

    2024年04月15日
    浏览(62)
  • 数据结构-顺序表的基本实现(C语言,简单易懂,含全部代码)

    今天起开始编写数据结构中的各种数据结构及算法的实现,说到顺序表,我们首先得了解下线性表。 线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串… 线性表在逻

    2023年04月08日
    浏览(39)
  • 【C语言\数据结构】图dijkstra最短路径 邻接矩阵(无项、有权)代码简单实现深度解析

    这个代码是在图的邻接矩阵(无项、有权)的代码的基础上,添加了dijkstra最短路径函数,并且修改测试用例和主函数代码,图的邻接矩阵(无项、有权)的代码具体请查看 【C语言数据结构】图之邻接矩阵(无向、有权)代码简单实现,这里就不过多赘述。 我们用一个案例

    2024年02月03日
    浏览(51)
  • 【数据结构】栈和队列常见题目

    队列:先进先出 栈:后进先出 队列:先进先出 栈:后进先出 https://leetcode.cn/problems/valid-parentheses/ 做法:遍历字符串 1.当前字符是左括号:进栈 2.当前字符是右括号:出栈顶元素和当前字符比较是否匹配 特殊情况:如果此时栈为空,那么说明不匹配 3.最后如果栈为空,说明

    2024年02月12日
    浏览(37)
  • 【数据结构】二叉树经典题目

    相信大部分人看了题目描述之后,都会和我一样一脸的懵逼。直到我看到了一个描述才恍然大悟 分为3种情况: 左右都为空 --省略 右为空,左不为空 – 省略 左为空,右不为空–不省略 这里复习一下二叉树的前序遍历、中序遍历、和后序遍历 前序的结果是:ABDEGCF 中序的结

    2024年02月10日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包