
算法
文章平均质量分 78
算法学习
geek-wmy
一位专注的码农
展开
-
算法基础十五
给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。示例 1:输入:nums = [-10,-3,0,5,9] 输出:[0,-3,9,-10,null,5]解释:[0,-10,5,null,-3,null,9] 也将被视为正确答案:示例 2:输入:nums = [1,3] 输出:[3,1]原创 2023-12-16 11:12:50 · 399 阅读 · 0 评论 -
算法基础十四
给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。示例 1:输入:s = “Hello World” 输出:5 解释:最后一个单词是“World”,长度为5。示例 2:输入:s = " fly me to the moon " 输出:4 解释:最后一个单词是“moon”,长度为4。原创 2023-12-16 10:59:59 · 81 阅读 · 0 评论 -
算法基础十三
给你一个整数 n ,请你生成并返回所有由 n 个节点组成且节点值从 1 到 n 互不相同的不同 二叉搜索树。可以按 任意顺序 返回答案。示例 1:输入:n = 3输出:[[1,null,2,null,3],[1,null,3,2],[2,1,3],[3,1,null,null,2],[3,2,null,1]]示例 2:输入:n = 1 输出:[[1]]原创 2023-12-12 21:31:49 · 112 阅读 · 0 评论 -
算法基础十二
给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字。返回 已排序的链表。示例 1:输入:head = [1,2,3,3,4,4,5] 输出:[1,2,5]示例 2:输入:head = [1,1,1,2,3] 输出:[2,3]原创 2023-12-11 21:13:26 · 104 阅读 · 0 评论 -
算法基础十一
给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。示例 1:输入:n = 4, k = 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ]示例 2:输入:n = 1, k = 1 输出:[[1]]解题思路:DFS。原创 2023-12-10 20:19:26 · 172 阅读 · 0 评论 -
算法基础十
给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。示例 1:输入:digits = [1,2,3] 输出:[1,2,4] 解释:输入数组表示数字 123。示例 2:输入:digits = [4,3,2,1] 输出:[4,3,2,2] 解释:输入数组表示数字 4321。示例 3:输入:digits = [0]解题思路:给定数组代表一个十进制数,数组的0下标是十进制的高位。从数组尾部开始遍历,依次进位。原创 2023-12-10 19:45:39 · 127 阅读 · 0 评论 -
算法基础九
给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix。示例 1:输入:n = 3 输出:[[1,2,3],[8,9,4],[7,6,5]]示例 2:输入:n = 1 输出:[[1]]解题思路:里面元素是1 - n*n,并且数组是顺序螺旋排列。原创 2023-12-10 19:21:00 · 800 阅读 · 0 评论 -
算法基础八
实现 pow(x, n) ,即计算 x 的整数 n 次幂函数(即,xn )。示例 1:输入:x = 2.00000, n = 10 输出:1024.00000示例 2:输入:x = 2.10000, n = 3 输出:9.26100解题思路:用递归的方式,将n 二分下去,注意n的正负和奇偶。原创 2023-12-09 13:35:00 · 195 阅读 · 0 评论 -
算法基础七
给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。示例 1:输入:nums = [1,2,0] 输出:3示例 2:输入:nums = [3,4,-1,1] 输出:2示例 3:输入:nums = [7,8,9,11,12] 输出:1解题思路:为了减少复杂度,可以把数组缓存到map中,然后将 i 从1开始循环,一次对比map中是否存在 i 只要不存在就立即返回结果 i。原创 2023-12-09 12:44:35 · 197 阅读 · 0 评论 -
算法基础六
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。示例 1: 输入: nums = [1,3,5,6], target = 5 输出: 2示例 2: 输入: nums = [1,3,5,6], target = 2 输出: 1示例 3: 输入: nums = [1,3,5,6], target = 7 输出: 4解题思路:二分搜索。原创 2023-12-04 21:47:24 · 458 阅读 · 0 评论 -
算法基础五
给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。示例 1:输入:nums = [5,7,7,8,8,10], target = 8 输出:[3,4]示例 2:输入:nums = [5,7,7,8,8,10], target = 6 输出:[-1,-1]示例 3:输入:nums = [], target = 0 输出:[-1,-1]原创 2023-12-03 11:04:25 · 181 阅读 · 0 评论 -
算法基础四
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例 1:示例 1:输入:n = 3 输出:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]示例 2:输入:n = 1 输出:[“()”]解题思路:回溯算法。这一类问题是在一棵隐式的树上求解,可以用深度优先遍历,也可以用广度优先遍历。一般用深度优先遍历。原因是:1.代码好写,使用递归的方法,直接借助系统栈完成状态的转移;原创 2023-12-02 14:05:06 · 261 阅读 · 0 评论 -
算法基础三
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。原创 2023-12-01 10:36:57 · 129 阅读 · 0 评论 -
算法基础二
给你一个整数 x ,如果 x 是一个回文整数,返回 true;否则,返回 false。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。解题思路:注意负数,10的情况。原创 2023-11-28 21:45:12 · 185 阅读 · 0 评论 -
算法基础一
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。解题思路:这道题最优的做法时间复杂度是O(n),顺序扫描数组,对每一个元素在map中找能组合给定值的另一半数字,如果找到了直接返回2个数字的下标。如果找不到就把数字放入map,进入下一次循环。原创 2023-11-26 22:06:37 · 349 阅读 · 0 评论