之前在leetcode刷题,都是按照难易度。
后来会选择某些标签来刷题,比如针对数组来刷同类型的题目,就会选择array的标签。
但是这种方式筛选出来的题目仍旧比较粗犷,不够细致。
自从有了gpt,就可以让gpt更细致的筛选出来题型,比如排序问题,甚至只刷快速排序相关的题目。
我就会直接在gpt上搜索,leetcode选择排序是第几题?
他会给出以下答案
LeetCode 上并没有一题明确以“选择排序”(Selection Sort)命名的题目,因为 LeetCode 更注重实际应用问题,而不是直接考查基础排序算法。然而,你可以通过以下方式在 LeetCode 上找到类似的题目:
寻找适合实现选择排序的题目
选择排序是一种简单的排序算法,其时间复杂度为 。适合选择排序的题目通常是需要你自己实现排序逻辑,而不是直接使用内置的排序函数。以下是一些相关的题目:
1. 适合用选择排序实现的题目
题目要求你实现一个排序算法来对数组进行排序,你可以选择实现选择排序、快速排序、归并排序等任意排序算法。
这道题要求对链表进行排序,虽然它主要考察插入排序,但你也可以尝试用选择排序来实现。
这道题虽然要求的是相对排序,但你可以使用选择排序的思想来完成部分排序逻辑。
2. 手动实现排序的题目
有些题目虽然没有明确要求排序,但你可以通过选择排序实现排序逻辑,比如:
在这道题中,你需要对区间进行排序,可以通过选择排序对区间的起点进行排序。
• 215. Kth Largest Element in an Array
这道题需要找到数组中的第 大元素。虽然更高效的做法是用堆或快排思想,但你可以先用选择排序排序,然后返回结果。
选择排序代码模板
以下是选择排序的基本实现,可用于上述题目:
public void selectionSort(int[] nums) {
int n = nums.length;
for (int i = 0; i < n - 1; i++) {
int minIndex = i; // 假设当前索引为最小值
for (int j = i + 1; j < n; j++) {
if (nums[j] < nums[minIndex]) {
minIndex = j; // 找到更小值更新索引
}
}
// 交换最小值到当前排序位置
int temp = nums[i];
nums[i] = nums[minIndex];
nums[minIndex] = temp;
}
}
总结
LeetCode 并没有专门命名为“选择排序”的题目,但像 912. Sort an Array 是最适合练习选择排序的题目之一。选择排序作为基础排序算法,也可以灵活用于其他需要排序的题目中。