如何做网站在网上销售,织梦网站源文件没有style文件夹怎么修改网站背景,电子商务网站建设课程设计总结,多用户商城app创作目的#xff1a;为了方便自己后续复习重点#xff0c;以及养成写博客的习惯。
一、无重叠区间
思路#xff1a;参考carl文档 按照右边界排序#xff0c;从左向右记录非交叉区间的个数。最后用区间总数减去非交叉区间的个数就是需要移除的区间个数了。
ledcode题目为了方便自己后续复习重点以及养成写博客的习惯。
一、无重叠区间
思路参考carl文档 按照右边界排序从左向右记录非交叉区间的个数。最后用区间总数减去非交叉区间的个数就是需要移除的区间个数了。
ledcode题目https://leetcode.cn/problems/non-overlapping-intervals/description/ AC代码
int cmp(int** a, int** b) {return (*a)[1] - (*b)[1];
}int eraseOverlapIntervals(int** intervals, int intervalsSize, int* intervalsColSize) {if (intervalsSize 0) {return 0;}qsort(intervals, intervalsSize, sizeof(int*), cmp);int right intervals[0][1];int ans 1;for (int i 1; i intervalsSize; i) {if (intervals[i][0] right) {ans;right intervals[i][1];}}return intervalsSize - ans;
}二、划分字母区间
思路参考carl文档 统计每一个字符最后出现的位置从头遍历字符并更新字符的最远出现下标。如果找到字符最远出现位置下标和当前下标相等了则找到了分割点
lecode题目https://leetcode.cn/problems/partition-labels/description/ AC代码
int* partitionLabels(char* s, int* returnSize) {int last[26];int length strlen(s);for (int i 0; i length; i) {last[s[i] - a] i;}int* partition (int*)malloc(sizeof(int) * length);int start 0, end 0;*returnSize 0;for (int i 0; i length; i) {end fmax(end, last[s[i] - a]);if (i end) {partition[(*returnSize)] end - start 1;start end 1;}}return partition;
}
三、合并区间
思路参考carl文档 按照左边界从小到大排序之后如果 intervals[i][0] intervals[i - 1][1] 即intervals[i]的左边界 intervals[i - 1]的右边界则一定有重叠。合并区间后左边界和右边界作为一个新的区间加入到result数组里。如果没有合并就把原区间加入到result数组。
ledcode题目https://leetcode.cn/problems/merge-intervals/description/ AC代码
int cmp(const void* a, const void* b){return (*(int**)a)[0] (*(int**)b)[0] ? 1 : -1;
}
int** merge(int** intervals, int intervalsSize, int* intervalsColSize, int* returnSize, int** returnColumnSizes){if (intervals NULL || intervalsSize 0) {return NULL;}qsort(intervals, intervalsSize, sizeof(int*), cmp);int right intervals[0][1];int** res (int**)calloc(intervalsSize, sizeof(int*));* returnColumnSizes (int*)calloc(intervalsSize, sizeof(int));for (int i 0; i intervalsSize; i) {res[i] (int*)calloc(2, sizeof(int));(* returnColumnSizes)[i] 2;}*returnSize 0;res[*returnSize][0] intervals[0][0];res[*returnSize][1] intervals[0][1];(* returnSize);for (int i 1; i intervalsSize; i) {if (intervals[i][0] right) {res[*returnSize][0] intervals[i][0];res[*returnSize][1] intervals[i][1];right intervals[i][1];(* returnSize); }else if (intervals[i][1] right){res[*returnSize - 1][1] intervals[i][1];right intervals[i][1];}}return res;
}