自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 收藏
  • 关注

原创 11. 盛最多水的容器

给定一个长度为 n 的整数数组 height。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i])。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明:你不能倾斜容器。

2023-08-21 09:59:07 64

原创 605. 种花问题

假设有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去。给你一个整数数组 flowerbed 表示花坛,由若干 0 和 1 组成,其中 0 表示没种植花,1 表示种植了花。另有一个数 n ,能否在不打破种植规则的情况下种入 n 朵花?能则返回 true ,不能则返回 false。

2023-08-18 17:28:08 293

原创 HJ17 坐标移动

开发一个坐标计算工具, A表示向左移动,D表示向右移动,W表示向上移动,S表示向下移动。从(0,0)点开始移动,从输入字符串里面读取一些坐标,并将最终输入结果输出到输出文件里面。从头到尾遍历整个字符串,如果遍历到字符’W’,‘S’,‘A’,'D’就判断后面的字符,如果是数字则对字符进行处理,将他转换为数字,否则就将计数清零。1≤n≤10000坐标保证满足 −2^31≤x,y≤2 ^31−1,且数字部分仅含正数.合法坐标为A(或者D或者W或者S) + 数字(两位以内)A1A = 无效。

2023-08-10 11:10:55 88

原创 HJ15 求int型正整数在内存中存储时1的个数

将二进制的32位每一位与1相互’与‘,如果得到的值是1,证明该位为1,计数增加,否则继续移位。输入一个 int 型的正整数,计算出该 int 型数据在内存中存储时 1 的个数。对输入的整数进行模2运算,余数是1,计数器增加,做完继续除以2.数据范围:保证在 32 位整型数字范围内。每次将最右边的1变为0,统计1的个数。这个数转换成2进制后,输出1的个数。输入一个整数(int类型)

2023-07-19 17:35:37 43

原创 HJ14 字符串排序

输入第一行为一个正整数n(1≤n≤1000),下面n行为n个字符串(字符串长度≤100),字符串中只含有大小写字母。数据范围:1<=n<=1000,字符串长度满足1<=len<=100。给定 n 个字符串,请对 n 个字符串按照字典序排列。数据输出n行,输出结果为按照字典序排列的字符串。将字符串排序输出即可。

2023-07-19 15:52:17 38

原创 HJ13 句子逆序

将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符。输入一串字符串,定义一个标志位,遍历字符串查找是否有空格,如果有证明单词不止一个将flage置为1,没有就说明只有一个单词将字符串正序输出即可。从后往前遍历发现空格就打印空格后面的内容,并将空格位置为’\0‘即可。输入一个英文语句,每个单词用空格隔开。数据范围:输入的字符串长度满足 1≤n≤1000。输入:I am a boy。

2023-07-19 13:54:27 32

原创 HJ12 字符串反转

接受一个只包含小写字母的字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000)输入一行,为一个只包含小写字母的字符串。输入一个字符串,从后往前输出即可。输出该字符串反转后的字符串。

2023-07-19 11:14:53 37

原创 HJ11 数字颠倒

程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001。输入一个整数,将这个整数以字符串的形式逆序输出。数据范围:0≤n≤2 ^30-1。将这个整数以字符串的形式逆序输出。输入:1516000。输出:0006151。

2023-07-19 10:59:08 43

原创 HJ10 字符个数统计

编写一个函数,计算字符串中含有的不同字符的个数。字符在 ASCII 码范围内( 0~127 ,包括 0 和 127 ),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次。例如,对于字符串 abaca 而言,有 a、b、c 三种不同的字符,因此输出 3。将输入的字符串逐个取出,放入到一个长度位128的数组指定位置上,然后对应输出即可。输出 输入字符串 中范围在(0~127,包括0和127)字符的种数。数据范围:1<=n<=500。输入一行没有空格的字符串.

2023-07-19 10:30:59 25

原创 HJ9 提取不重复的整数

输入一个 int 型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。输入一个正整数对每一位求余,将余数放入到指定的数组位置上输出即可。以字符串的形式输入一串数字,从最后一项向前删除重复的项即可。按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。保证输入的整数最后一位不是 0。数据范围: 1

2023-07-19 10:10:31 48

原创 HJ8 合并表记录

数据表记录包含表索引index和数值value(int范围的正整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照index值升序进行输出。本来这题可以用哈希表的方法,奈何数据太大,造成内存不够只能使用二维数组排序,再将相同索引的合并即可。接下来n行每行输入成对的index和value值,以空格隔开。先输入键值对的个数n(1 <= n <= 500)输出合并后的键值对(多行)

2023-07-18 11:05:51 66

原创 HJ7 取近似值

写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于 0.5 ,向上取整;小于 0.5 ,则向下取整。数据范围:保证输入的数字在 32 位浮点数范围内。0.5>=0.5,所以5.5需要向上取整为6。0.499<0.5,2.499向下取整为2。输出该数值的近似整数值。

2023-07-14 15:29:20 38

原创 HJ6 质数因子

从2开始遍历,如果输入的数字余2等于0,则将输入的数除以2,继续余2,直达不为0,数字继续往上增加,判断到输入数字的根号值即可。功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )按照从小到大的顺序输出它的所有质数的因子,以空格隔开.输出:2 2 3 3 5。

2023-07-14 15:14:36 29

原创 HJ5 进制转换

将输入的16进制存入到一个字符串,判断字符串的范围,如果范围处于A-F,就将字符串减去32,减去0的ASCII码,在减去7得到对应的数字,如果范围处于a-f,减去0的ASCII码,如果就是数字就减掉0的ASCII码即可,最后做相乘。写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。输出该数值的十进制字符串。不同组的测试用例用\n隔开。直接%x输入16进制的数字,10进制输出即可。输入一个十六进制的数值字符串。数据范围:保证结果在。

2023-07-13 18:07:33 160

原创 HJ4 字符串分隔

判断输入的字符串,如果长度小于8直接在后面补充字符串0即可,如果大于8如果是8的整数倍就直接按格式打印即可,如果不是8的倍数,长度除以8并将得到的数加一乘以8后面补充字符串8,按格式打印即可。以八位进行读入,如果不够八位就输入结束。不够八位则补0. 2.注意:读入为覆盖读入,下一次读入的八位会把上一次的覆盖掉。输入一个字符串,请按长度为8拆分每个输入字符串并进行输出;长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。依次输出所有分割后的长度为8的新字符串。

2023-07-13 15:25:56 50

原创 HJ3 明明的随机数

明明生成了N个1到500之间的随机整数。请你删去其中重复的数字,即相同的数字只保留一个,把其余相同的数去掉,然后再把这些数从小到大排序,按照排好的顺序输出。第一行先输入随机整数的个数 N。接下来的 N 行每行输入一个整数,代表明明生成的随机数。具体格式可以参考下面的"示例"。将输入的数字存入到一个数组去除数组中重复的数字,并按从小到大的顺序将数组输出即可。输出多行,表示输入数据处理后的结果。

2023-07-11 19:20:39 30

原创 HJ2 计算某字符出现次数

判断要查询的字符是大写字母还是小写字母,如果是小写字母判断该字符是在字符串中出现的次数并查询字符串中的字符加32是否等于该字符,大写就减去32,不是字母正常判断即可。写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字符,然后输出输入字符串中该字符的出现次数。(不区分大小写字母)第一行输入一个由字母、数字和空格组成的字符串,第二行输入一个字符(保证该字符不为空格)。输出输入字符串中含有该字符的个数。(不区分大小写字母)数据范围: 1≤n≤1000。

2023-07-10 21:17:32 35

原创 HJ1 字符串最后一个单词的长度

从字符串的开头开始遍历,如果字符串不为空格就将长度依次递增,如果遇见空格字符就将长度置0,直到字符串结束。计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾)从字符串的最后一个字符往前,每一次遇到一个字符长度就加1,遇到空格就结束遍历,返回长度。输入一行,代表要计算的字符串,非空,长度小于5000。输出一个整数,表示输入字符串最后一个单词的长度。最后一个单词为nowcoder,长度为8。

2023-07-10 18:31:44 37

原创 USB四大传输

10.1 控制传输控制传输分为三个过程建立过程,(可选)数据过程和状态过程。建立过程建立过程使用的是SETUP令牌包,然后是数据包,SETUP只能使用DATA0包。最后才是握手包,设备只能使用ACK回应(除非出错),不能使用NAK或者STALL,事物必须接收建立事物数据。具体过程如图所示。数据过程该过程是一个可选的,即一个控制传输可能没有数据过程。如果有数据过程一个数据过程可能有一个或者多个数据事务。在数据传输的过程中数据传输的过程方向必须是唯一的。要么全是写(OUT),要么全是读(IN)。数据

2022-05-14 23:40:55 946

原创 622. 设计循环队列

设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即使在队列前面仍有空间。但是使用循环队列,我们能使用这些空间去存储新的值。你的实现应该支持如下操作:MyCircularQueue(k): 构造器,设置队列长度为 k 。Front: 从队首获取元素。如果队列为空,返回 -1 。

2022-05-04 16:49:56 70

原创 232. 用栈实现队列

链接请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现 MyQueue 类:void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int peek() 返回队列开头的元素boolean empty() 如果队列为空,返回 true ;否则,返回 false说明:你 只能 使用标准的栈操作 —— 也就是只有 push to top, peek/pop from top, siz

2022-05-03 14:31:46 69

原创 225. 用队列实现栈

链接请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。实现 MyStack 类:void push(int x) 将元素 x 压入栈顶。int pop() 移除并返回栈顶元素。int top() 返回栈顶元素。boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。注意:你只能使用队列的基本操作 —— 也就是 push to back、peek/pop from front、size

2022-04-30 20:30:13 58

原创 队列基本操作

队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out) 入队列:进行插入操作的一端称为队尾 出队列:进行删除操作的一端称为队头。具体概念不在讲述直接上代码。Queue.h#pragma once#include <stdio.h>#include <stdlib.h>#include <assert.h>#include <stdbool.h>typedef i

2022-04-25 21:57:50 80

原创 20. 有效的括号

2021-12-01 22:47:51 62

原创 栈基本操作

栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。这里介绍栈的基本操作,具体概念可以网上的概念,直接上代码。Stack.h#define _CRT_SECURE_NO_WARNINGS 1#pragma once//栈:只允许固定一端进行插入和删除元素操作,称为栈顶,另一端为栈底//出入数据都在栈顶 //我们选择动态数组的话实现起来比较简单

2021-12-01 22:39:26 177

原创 双向循环列表基本操作

和单项列表类似,这里介绍一些基本操作,虽然结构上比单向列表复杂,但是操作起来却简易的多。test.c`#include "List.h"void TestList1(){ /* ListNode* phead = NULL; ListInit(&phead);*/ ListNode* phead = ListInit(); ListPushBack(phead,1); ListPushBack(phead,2); ListPushBack(phead,3); ListPus

2021-11-28 11:26:56 147

原创 JZ76 删除链表中重复的结点

链接描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表 1->2->3->3->4->4->5 处理后为 1->2->5数据范围:链表长度满足 ,链表中的值满足进阶:空间复杂度 ,时间复杂度例如输入{1,2,3,3,4,4,5}时,对应的输出为{1,2,5},对应的输入输出链表如下图所示:示例1输入:{1,2,3,3,4,4,5}返回值:{1,2,5}示例2输入:{1

2021-11-08 22:59:18 39

原创 147. 对链表进行插入排序

对链表进行插入排序。插入排序的动画演示如上。从第一个元素开始,该链表可以被认为已经部分排序(用黑色表示)。每次迭代时,从输入数据中移除一个元素(用红色表示),并原地将其插入到已排好序的链表中。插入排序算法:插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。重复直到所有输入数据插入完为止。示例 1:输入: 4->2->1->3输出: 1->2-&g

2021-11-07 23:53:26 64

原创 138. 复制带随机指针的链表

链接给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。复制链表中的指针都不应指向原链表中的节点 。例如,如果原链表中有 X 和 Y 两个节点,其中 X.random --> Y 。那么在

2021-10-31 22:39:36 55

原创 21. 合并两个有序链表

链接将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例 2:输入:l1 = [], l2 = []输出:[]示例 3:输入:l1 = [], l2 = [0]输出:[0]提示:两个链表的节点数目范围是 [0, 50]-100 <= Node.val <= 100l1 和 l2 均按 非递减顺序 排列来源:力扣(Leet

2021-10-24 23:30:29 57

原创 链表中倒数第k个结点

链接描述输入一个链表,输出该链表中倒数第k个结点。示例1输入:1,{1,2,3,4,5}复制返回值:{5}长度法首先计算出整个链表的长度,其次根据K的值做差,最后重新遍历链表,找到相应位置的值。/** * struct ListNode { * int val; * struct ListNode *next; * }; *//** * * @param pListHead ListNode类 * @param k int整型 * @return ListN

2021-10-24 21:33:24 53

原创 2021-10-24

876. 链表的中间结点给定一个头结点为 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, 以及 ans.next.n

2021-10-24 19:27:10 50

原创 203. 移除链表元素

给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。示例 1:输入:head = [1,2,6,3,4,5,6], val = 6输出:[1,2,3,4,5]示例 2:输入:head = [], val = 1输出:[]示例 3:输入:head = [7,7,7,7], val = 7输出:[]提示:列表中的节点数目在范围 [0, 104] 内1 <= Node.val <= 500

2021-10-20 21:50:17 55

原创 206. 反转链表

链接给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例 1:输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]示例 2:输入:head = [1,2]输出:[2,1]示例 3:输入:head = []输出:[]提示:链表中节点的数目范围是 [0, 5000]-5000 <= Node.val <= 5000进阶:链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?来源:力扣(LeetCode)链接:https:/

2021-10-20 20:12:04 40

原创 单向链表的基本操作

链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的 。链表的操作包括增删查改。test.c#include "SList.h"void main(){ SListNode* pList = NULL; SListPushBack(&pList,1); SListPushBack(&pList,2); SListPushBack(&pList,3); SListPushBack(&pList,4); S

2021-10-17 22:21:11 72

原创 189. 旋转数组

给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。进阶:尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗?示例 1:输入: nums = [1,2,3,4,5,6,7], k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]示例 2:输入

2021-10-15 00:04:48 55

原创 88. 合并两个有序数组

给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。示例 1:输入:nums1 = [1,2,3,0,

2021-10-14 22:05:05 37

原创 989. 数组形式的整数加法

链接对于非负整数 X 而言,X 的数组形式是每位数字按从左到右的顺序形成的数组。例如,如果 X = 1231,那么其数组形式为 [1,2,3,1]。给定非负整数 X 的数组形式 A,返回整数 X+K 的数组形式。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/add-to-array-form-of-integer著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。示例 1:输入:A = [1,2,0,0], K = 34

2021-10-13 21:04:17 65

原创 26. 删除有序数组中的重复项

链接给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下:// nums 是以“引用”方式传递的。也就是说,不对实参做任何拷贝int len = removeDuplicates(

2021-10-12 21:35:37 61

原创 27. 移除元素

链接给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下:// nums 是以“引用”方式传递的。也就是说,不对实参作任何拷贝in

2021-10-11 00:01:10 61

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除