搜索插入位置问题描述给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
请必须使用时间复杂度为O(log n) 的算法。
示例 1:
12输入: nums = [1,3,5,6], target = 5输出: 2
示例 2:
12输入: nums = [1,3,5,6], target = 2输出: 1
示例 3:
12输入: nums = [1,3,5,6], target = 7输出: 4
提示:
1 <= nums.length <= 104
-104 <= nums[i] <= 104
nums 为 无重复元素 的 升序 排列数组
-104 <= target <= 104
思路我们可以使用二分查找的思想来找到 target 应该插入的位置,而不需要修改原始数组。
代码实现123456789101112131415161718class Solution { public: int searchInsert(vector<int&g ...
原地算法移除元素题目描述给你一个数组nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。
假设nums 中不等于 val 的元素数量为 k,要通过此题,您需要执行以下操作:
更改nums 数组,使 nums 的前 k 个元素包含不等于 val 的元素。nums 的其余元素和 nums 的大小并不重要。
返回k。
用户评测:
评测机将使用以下代码测试您的解决方案:
123456789101112int[] nums = [...]; // 输入数组int val = ...; // 要移除的值int[] expectedNums = [...]; // 长度正确的预期答案。 // 它以不等于 val 的值排序。int k = removeElement(nums, val); // 调用你的实现assert k == expectedNums.length;sort(nums, 0, k); // 排序 nums 的前 k 个元素f ...
删除有序数组中的重复项题目描述给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。
考虑nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以被通过:
更改数组nums ,使 nums 的前 k 个元素包含唯一元素,并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。
返回k 。
判题标准:
系统会用下面的代码来测试你的题解:
123456789int[] nums = [...]; // 输入数组int[] expectedNums = [...]; // 长度正确的期望答案int k = removeDuplicates(nums); // 调用assert k == expectedNums.length;for (int i = 0; i < k; i++) { assert nums[i] == expectedNums[i];}
如果 ...
统计范围内的元音字符串数问题描述给你一个下标从0开始的字符串数组 words 和两个整数:left 和 right 。
**如果字符串以元音字母开头并以元音字母结尾,那么该字符串就是一个 元音字符串 ,其中元音字母是 'a'、'e'、'i'、'o'、'u' 。
返回words[i] 是元音字符串的数目,其中 i 在闭区间 [left, right] 内。
示例 1:
1234567输入:words = ["are","amy","u"], left = 0, right = 2输出:2解释:- "are" 是一个元音字符串,因为它以 'a' 开头并以 'e' 结尾。- "amy" 不是元音字符串,因为它没有以元音字母结尾。- "u" 是一个元音字符串,因为它以 'u' 开头并以 'u' 结尾。在上述范围中的元 ...
转置矩阵题目描述给你一个二维整数数组matrix, 返回 matrix 的 转置矩阵 。
矩阵的转置 是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。
示例 1:
12输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[[1,4,7],[2,5,8],[3,6,9]]
示例 2:
12输入:matrix = [[1,2,3],[4,5,6]]输出:[[1,4],[2,5],[3,6]]
提示:
m == matrix.length
n == matrix[i].length
1 <= m, n <= 1000
1 <= m * n <= 105
-109 <= matrix[i][j] <= 109
代码实现1234567891011121314151617181920#include <iostream>#include <vector>using namespace std;class Solution {public: vector<vector< ...
实战章节:在Linux上部署各类软件MySQL数据库管理系统安装部署【简单】简介MySQL数据库管理系统(后续简称MySQL),是一款知名的数据库系统,其特点是:轻量、简单、功能丰富。
MySQL数据库可谓是软件行业的明星产品,无论是后端开发、大数据、AI、运维、测试等各类岗位,基本上都会和MySQL打交道。
让我们从MySQL开始,进行实战的Linux软件安装部署。
本次课程分为2个版本进行安装:
MySQL 5.7版本安装
MySQL 8.x版本安装
由于MySQL5.x和8.x各自有许多使用者,所以这两个版本我们都演示安装一遍
注意MySQL的安装过程中,除了会使用Linux命令外,还会使用到少量的数据库专用的:SQL语句
对于SQL语句我们并未涉及,所以可以跟随教程的内容,复制粘贴即可
如有时间,建议可以在学习完Linux系统之后,学习一下MySQL数据库
无论从事什么方面的开发,Java后端、大数据、AI、前端、Linux运维等,都会要求掌握MySQL数据库的
可以说,MySQL是IT开发从业者必备的技能了。
MySQL5.7版本在CentOS系统安装
注意:安装 ...
Linux基础命令Linux的目录结构
/,根目录是最顶级的目录了
Linux只有一个顶级目录:/
路径描述的层次关系同样适用/来表示
/home/itheima/a.txt,表示根目录下的home文件夹内有itheima文件夹,内有a.txt
ls命令功能:列出文件夹信息
语法:ls [-l -h -a] [参数]
参数:被查看的文件夹,不提供参数,表示查看当前工作目录
-l,以列表形式查看
-h,配合-l,以更加人性化的方式显示文件大小
-a,显示隐藏文件
隐藏文件、文件夹在Linux中以.开头的,均是隐藏的。
默认不显示出来,需要-a选项才可查看到。
pwd命令功能:展示当前工作目录
语法:pwd
cd命令功能:切换工作目录
语法:cd [目标目录]
参数:目标目录,要切换去的地方,不提供默认切换到当前登录用户HOME目录
HOME目录每一个用户在Linux系统中都有自己的专属工作目录,称之为HOME目录。
普通用户的HOME目录,默认在:/home/用户名
root用户的HOME目录,在:/root
FinalShell登陆终端后,默认 ...
串的模式匹配算法暴力匹配原理从主串的指定的起始位置字符开始和模式第一个字符比较,如果相等,则继续比较下一个字符,如果不等,则从主串的下一个字符开始和模式的第一个字符开始比较,以此类推,直到模式串所有字符都匹配完成,则匹配成功,否则,匹配不成功
代码12345678910111213141516171819202122232425262728293031#include <stdio.h>#define MAXLEN 255typedef struct { char ch[MAXLEN];//从索引1开始存储 int len;} SString;//暴力匹配int index(SString S, SString T, int pos) { if (pos < 1 || pos > S.len) { return 0; } int i = pos; int j = 1; while (i <= S.len && j <= T.le ...
合并两个有序链表将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例 1:
12输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]
示例 2:
12输入:l1 = [], l2 = []输出:[]
示例 3:
12输入:l1 = [], l2 = [0]输出:[0]
提示:
两个链表的节点数目范围是[0, 50]
-100 <= Node.val <= 100
l1 和 l2 均按 非递减顺序 排列
代码123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657#include <iostream>using namespace std;struct ListNode { int val; ListNode *next; ListNode() : val(0), next(null ...
栈实现括号匹配给定一个只包括'(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
每个右括号都有一个对应的相同类型的左括号。
示例 1:
12输入:s = "()"输出:true
示例 2:
12输入:s = "()[]{}"输出:true
示例 3:
12输入:s = "(]"输出:false
提示:
1 <= s.length <= 104
s 仅由括号 '()[]{}' 组成
代码1234567891011121314151617181920212223242526272829303132333435363738#include <iostream>#include <stack>u ...