随笔分类 - C/C++
摘要:下面是C语言中两种if语句判断方式。请问哪种写法更好?为什么? int n; if (n == 10) // 第一种判断方式 if (10 == n) // 第二种判断方式 第二种方式比较好 如果少了个=号,编译时就会报错,减少了出错的可能行,可以检测出是否少了=
阅读全文
摘要:char **str; char *p=(char *)malloc(1024); memset(p,0,1024); strcpy(p,"123w213"); str=&p; cout<<*str<<endl; if(str) { free(str); str=NULL; cout<<"free"
阅读全文
摘要:1 环境配置 下载最新版源码。 编译过程需要用到cmake,注意安装cmake的过程需要添加环境变量。 解压源代码,然后通过命令行进入源码目录,输入四条指令 mkdir build cd build cmake .. -G "Visual Studio 16 2019" -T host=x64 cm
阅读全文
摘要:一、实现可变参数的相关工具 va_list 为可变参数类型,一般为指针类型。用于扫描可变参数列表的变量都是这种类型。以下暂称该变量为取值指针。 va_start 是一个宏,它根据最右边的固定参数的地址和数据类型推算出可变参数列表的起始地址,并将该地址赋予取值指针。 va_arg 是一个宏,它返回当前
阅读全文
摘要:数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗? 注意:本题相对书上原题稍作改动 示例 1: 输入:[3,0,1] 输出:2 示例 2: 输入:[9,6,4,2,3,5,7,0,1] 输出:8 Code: class Solution
阅读全文
摘要:珠玑妙算游戏(the game of master mind)的玩法如下。 计算机有4个槽,每个槽放一个球,颜色可能是红色(R)、黄色(Y)、绿色(G)或蓝色(B)。例如,计算机可能有RGGB 4种(槽1为红色,槽2、3为绿色,槽4为蓝色)。作为用户,你试图猜出颜色组合。打个比方,你可能会猜YRGB
阅读全文
摘要:你正在使用一堆木板建造跳水板。有两种类型的木板,其中长度较短的木板长度为shorter,长度较长的木板长度为longer。你必须正好使用k块木板。编写一个方法,生成跳水板所有可能的长度。 返回的长度需要从小到大排列。 示例 1 输入: shorter = 1 longer = 2 k = 3 输出:
阅读全文
摘要:数组中占比超过一半的元素称之为主要元素。给你一个 整数 数组,找出其中的主要元素。若没有,返回 -1 。请设计时间复杂度为 O(N) 、空间复杂度为 O(1) 的解决方案。 示例 1: 输入:[1,2,5,9,5,9,5,5,5] 输出:5 示例 2: 输入:[3,2] 输出:-1 示例 3: 输入
阅读全文
摘要:给你两个整数数组 arr1 , arr2 和一个整数 d ,请你返回两个数组之间的 距离值 。 「距离值」 定义为符合此距离要求的元素数目:对于元素 arr1[i] ,不存在任何元素 arr2[j] 满足 |arr1[i]-arr2[j]| <= d 。 示例 1: 输入:arr1 = [4,5,8
阅读全文
摘要:给定两个整数 a 和 b ,返回 任意 字符串 s ,要求满足: s 的长度为 a + b,且正好包含a 个 'a' 字母与 b 个 'b' 字母; 子串 'aaa' 没有出现在 s 中; 子串 'bbb' 没有出现在 s 中。 示例 1: 输入:a = 1, b = 2 输出:"abb" 解释:"
阅读全文
摘要:请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图) 注意: 一个有效的数独(部分已被填充)不一
阅读全文
摘要:将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 "PAYPALISHIRING" 行数为 3 时,排列如下: P A H N A P L S I I G Y I R 之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"
阅读全文
摘要:给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 1: 输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出:[[7,4
阅读全文
摘要:描述 示例1 输入: "1","99" 返回值: "1","99" 题解 思路: 获取s和t的最大长度len,遍历s和t,直到遍历完较长的字符串 将s和t的反向索引对应数值相加,并设置进位标记,将相加结果去除进位后放入新的字符串作为结果返回 将结果翻转,并返回 说明: 可以事先分配好res的长度,避
阅读全文
摘要:不使用任何内建的哈希表库设计一个哈希集合(HashSet)。 实现 MyHashSet 类: void add(key) 向哈希集合中插入值 key 。 bool contains(key) 返回哈希集合中是否存在这个值 key 。 void remove(key) 将给定值 key 从哈希集合中删
阅读全文
摘要:给出一个字符串数组 words 组成的一本英语词典。返回 words 中最长的一个单词,该单词是由 words 词典中其他单词逐步添加一个字母组成。 若其中有多个可行的答案,则返回答案中字典序最小的单词。若无答案,则返回空字符串。 示例 1: 输入:words = ["w","wo","wor","
阅读全文
摘要:给你一个整数数组 nums ,请计算数组的 中心下标 。 数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。 如果中心下标位于数组最左端,那么左侧数之和视为 0 ,因为在下标的左侧不存在元素。这一点对于中心下标位于数组最右端同样适用。 如果数组有多个中心下标,应该返回
阅读全文
摘要:实现一个 MyCalendar 类来存放你的日程安排。如果要添加的日程安排不会造成 重复预订 ,则可以存储这个新的日程安排。 当两个日程安排有一些时间上的交叉时(例如两个日程安排都在同一时间内),就会产生 重复预订 。 日程可以用一对整数 start 和 end 表示,这里的时间是半开区间,即 [s
阅读全文
摘要:如果出现下述两种情况,交易 可能无效: 交易金额超过 $1000 或者,它和 另一个城市 中 同名 的另一笔交易相隔不超过 60 分钟(包含 60 分钟整) 给定字符串数组交易清单 transaction 。每个交易字符串 transactions[i] 由一些用逗号分隔的值组成,这些值分别表示交易
阅读全文
摘要:定义一个函数 f(s),统计 s 中(按字典序比较)最小字母的出现频次 ,其中 s 是一个非空字符串。 例如,若 s = "dcce",那么 f(s) = 2,因为字典序最小字母是 "c",它出现了 2 次。 现在,给你两个字符串数组待查表 queries 和词汇表 words 。对于每次查询 qu
阅读全文

浙公网安备 33010602011771号