企业网站建设动图,中南建设,怎么样做门户网站,食品网站建设目的目录
1. 插入区间 #x1f31f;#x1f31f;#x1f31f;
2. 单词拆分 #x1f31f;#x1f31f;
3. 不同路径 #x1f31f;#x1f31f;
#x1f31f; 每日一练刷题专栏 #x1f31f;
Golang每日一练 专栏
Python每日一练 专栏
C/C每日一练 专栏
Java每日…
目录
1. 插入区间
2. 单词拆分
3. 不同路径 每日一练刷题专栏
Golang每日一练 专栏
Python每日一练 专栏
C/C每日一练 专栏
Java每日一练 专栏 1. 插入区间
给你一个 无重叠的 按照区间起始端点排序的区间列表。
在列表中插入一个新的区间你需要确保列表中的区间仍然有序且不重叠如果有必要的话可以合并区间。
示例 1
输入intervals [[1,3],[6,9]], newInterval [2,5]
输出[[1,5],[6,9]]
示例 2
输入intervals [[1,2],[3,5],[6,7],[8,10],[12,16]], newInterval [4,8]
输出[[1,2],[3,10],[12,16]]
解释这是因为新的区间 [4,8] 与 [3,5],[6,7],[8,10] 重叠。
示例 3
输入intervals [], newInterval [5,7]
输出[[5,7]]
示例 4
输入intervals [[1,5]], newInterval [2,3]
输出[[1,5]]
示例 5
输入intervals [[1,5]], newInterval [2,7]
输出[[1,7]]提示
0 intervals.length 104intervals[i].length 20 intervals[i][0] intervals[i][1] 105intervals 根据 intervals[i][0] 按 升序 排列newInterval.length 20 newInterval[0] newInterval[1] 105
以下程序实现了这一功能请你填补空白处内容
c #include stdio.h #include stdlib.h static int compare(const void *a, const void *b) { return ((int *)a)[0] - ((int *)b)[0]; } int **insert(int **intervals, int intervalsSize, int *intervalsColSize, int *newInterval, int newIntervalSize, int *returnSize, int **returnColumnSizes) { int i, len 0; int *tmp malloc((intervalsSize 1) * 2 * sizeof(int)); for (i 0; i intervalsSize; i) { tmp[i * 2] intervals[i][0]; tmp[i * 2 1] intervals[i][1]; } tmp[i * 2] newInterval[0]; tmp[i * 2 1] newInterval[1]; qsort(tmp, intervalsSize 1, 2 * sizeof(int), compare); int **results malloc((intervalsSize 1) * sizeof(int *)); results[0] malloc(2 * sizeof(int)); results[0][0] tmp[0]; results[0][1] tmp[1]; for (i 1; i intervalsSize 1; i) { results[i] malloc(2 * sizeof(int)); if (tmp[i * 2] results[len][1]) { len; ________________________; } else if (tmp[i * 2 1] results[len][1]) { results[len][1] tmp[i * 2 1]; } } len 1; *returnSize len; *returnColumnSizes malloc(len * sizeof(int)); for (i 0; i len; i) { (*returnColumnSizes)[i] 2; } return results; } int main(int argc, char **argv) { if (argc 3 || argc % 2 0) { fprintf(stderr, Usage: ./test new_s new_e s0 e0 s1 e1...); exit(-1); } int new_interv[2]; new_interv[0] atoi(argv[1]); new_interv[1] atoi(argv[2]); int i, count 0; int *size malloc((argc - 3) / 2 * sizeof(int)); int **intervals malloc((argc - 3) / 2 * sizeof(int *)); for (i 0; i (argc - 3) / 2; i) { intervals[i] malloc(2 * sizeof(int)); intervals[i][0] atoi(argv[i * 2 3]); intervals[i][1] atoi(argv[i * 2 4]); } int *col_sizes; int **results insert(intervals, (argc - 3) / 2, size, new_interv, 2, count, col_sizes); for (i 0; i count; i) { printf([%d,%d]\n, results[i][0], results[i][1]); } return 0; }
出处
https://edu.csdn.net/practice/25949978
代码
#include stdio.h
#include stdlib.hstatic int compare(const void *a, const void *b)
{return ((int *)a)[0] - ((int *)b)[0];
}int **insert(int **intervals, int intervalsSize, int *intervalsColSize, int *newInterval,int newIntervalSize, int *returnSize, int **returnColumnSizes)
{int i, len 0;int *tmp (int*)malloc((intervalsSize 1) * 2 * sizeof(int));for (i 0; i intervalsSize; i){tmp[i * 2] intervals[i][0];tmp[i * 2 1] intervals[i][1];}tmp[i * 2] newInterval[0];tmp[i * 2 1] newInterval[1];qsort(tmp, intervalsSize 1, 2 * sizeof(int), compare);int **results (int**)malloc((intervalsSize 1) * sizeof(int *));results[0] (int*)malloc(2 * sizeof(int));results[0][0] tmp[0];results[0][1] tmp[1];for (i 1; i intervalsSize 1; i){results[i] (int*)malloc(2 * sizeof(int));if (tmp[i * 2] results[len][1]){len;results[len][0] tmp[i * 2];results[len][1] tmp[i * 2 1];}else if (tmp[i * 2 1] results[len][1]){results[len][1] tmp[i * 2 1];}}len 1;*returnSize len;*returnColumnSizes (int*)malloc(len * sizeof(int));for (i 0; i len; i){(*returnColumnSizes)[i] 2;}return results;
}int main(int argc, char* argv[])
{if (argc3) return 1;int new_interv[2];new_interv[0] atoi((char*)argv[1]);new_interv[1] atoi((char*)argv[2]);int i, count 0;int *size (int*)malloc((argc - 3) / 2 * sizeof(int));int **intervals (int**)malloc((argc - 3) / 2 * sizeof(int *));for (i 0; i (argc - 3) / 2; i){intervals[i] (int*)malloc(2 * sizeof(int));intervals[i][0] atoi((char*)argv[i * 2 3]);intervals[i][1] atoi((char*)argv[i * 2 4]);}int *col_sizes;int **results insert(intervals, (argc - 3) / 2, size, new_interv, 2, count, col_sizes);for (i 0; i count; i){printf([%d,%d]\n, results[i][0], results[i][1]);}return 0;
}输出
略 2. 单词拆分
给定一个非空字符串 s 和一个包含非空单词的列表 wordDict判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。
说明
拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。
示例 1
输入: s leetcode, wordDict [leet, code]
输出: true
解释: 返回 true 因为 leetcode 可以被拆分成 leet code。示例 2
输入: s applepenapple, wordDict [apple, pen]
输出: true
解释: 返回 true 因为 applepenapple 可以被拆分成 apple pen apple。注意你可以重复使用字典中的单词。示例 3
输入: s catsandog, wordDict [cats, dog, sand, and, cat]
输出: false
出处
https://edu.csdn.net/practice/25949980
代码
#include bits/stdc.h
using namespace std;
class Solution
{
public:bool wordBreak(string s, vectorstring wordDict){mapstring, int tmp;for (int i 0; i wordDict.size(); i){tmp[wordDict[i]];}int n s.length();vectorbool res(n 1, false);res[0] true;for (int i 0; i n; i){for (int j 0; j i; j){if (res[j] tmp[s.substr(j, i - j)]){res[i] true;break;}}}return res[n];}
};int main()
{Solution sol;string s leetcode;vectorstring wordDict {leet, code};cout (sol.wordBreak(s, wordDict) ? true : false) endl;s applepenapple, wordDict {apple, pen};cout (sol.wordBreak(s, wordDict) ? true : false) endl;s catsandog, wordDict {cats, dog, sand, and, cat};cout (sol.wordBreak(s, wordDict) ? true : false) endl;return 0;
}
输出
true true false 3. 不同路径
一个机器人位于一个 m x n 网格的左上角 起始点在下图中标记为 “Start” 。
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角在下图中标记为 “Finish” 。
问总共有多少条不同的路径
示例 1 输入m 3, n 7
输出28示例 2
输入m 3, n 2
输出3
解释从左上角开始总共有 3 条路径可以到达右下角。
1. 向右 - 向下 - 向下
2. 向下 - 向下 - 向右
3. 向下 - 向右 - 向下
示例 3
输入m 7, n 3
输出28
示例 4
输入m 3, n 3
输出6提示
1 m, n 100题目数据保证答案小于等于 2 * 109
以下程序实现了这一功能请你填补空白处内容
c #include stdio.h #include stdlib.h static int uniquePaths(int m, int n) { int row, col; int *grids malloc(m * n * sizeof(int)); for (col 0; col m; col) { grids[col] 1; } for (row 0; row n; row) { grids[row * m] 1; } for (row 1; row n; row) { for (col 1; col m; col) { ______________________________; } } return grids[m * n - 1]; } int main(int argc, char **argv) { if (argc ! 3) { fprintf(stderr, Usage: ./test m n\n); exit(-1); } printf(%d\n, uniquePaths(atoi(argv[1]), atoi(argv[2]))); return 0; } ···
出处
https://edu.csdn.net/practice/24116334
代码
#include stdio.h
#include stdlib.hstatic int uniquePaths(int m, int n)
{int row, col;int *grids (int*)malloc(m * n * sizeof(int));for (col 0; col m; col){grids[col] 1;}for (row 0; row n; row){grids[row * m] 1;}for (row 1; row n; row){for (col 1; col m; col){grids[row * m col] grids[row * m col - 1] grids[(row - 1) * m col];}}return grids[m * n - 1];
}int main()
{printf(%d\n, uniquePaths(3, 7));printf(%d\n, uniquePaths(3, 2));printf(%d\n, uniquePaths(7, 3));printf(%d\n, uniquePaths(3, 3));return 0;
}
输出
28 3 28 6 每日一练刷题专栏
✨ 持续努力奋斗做强刷题搬运工 点赞你的认可是我坚持的动力 收藏你的青睐是我努力的方向
✎ 评论你的意见是我进步的财富
☸ 主页https://hannyang.blog.csdn.net/ Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏