Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 5a76c35

Browse files
leetcode
1 parent 192406b commit 5a76c35

File tree

2 files changed

+181
-0
lines changed

2 files changed

+181
-0
lines changed
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
/*
2+
* @lc app=leetcode.cn id=108 lang=cpp
3+
*
4+
* [108] 将有序数组转换为二叉搜索树
5+
*
6+
* https://leetcode.cn/problems/convert-sorted-array-to-binary-search-tree/description/
7+
*
8+
* algorithms
9+
* Easy (77.40%)
10+
* Likes: 1302
11+
* Dislikes: 0
12+
* Total Accepted: 355.1K
13+
* Total Submissions: 458.8K
14+
* Testcase Example: '[-10,-3,0,5,9]'
15+
*
16+
* 给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡
17+
* 二叉搜索树。
18+
*
19+
* 高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1
20+
* 」的二叉树。
21+
*
22+
*
23+
*
24+
* 示例 1:
25+
*
26+
*
27+
* 输入:nums = [-10,-3,0,5,9]
28+
* 输出:[0,-3,9,-10,null,5]
29+
* 解释:[0,-10,5,null,-3,null,9] 也将被视为正确答案:
30+
*
31+
*
32+
*
33+
* 示例 2:
34+
*
35+
*
36+
* 输入:nums = [1,3]
37+
* 输出:[3,1]
38+
* 解释:[1,null,3] 和 [3,1] 都是高度平衡二叉搜索树。
39+
*
40+
*
41+
*
42+
*
43+
* 提示:
44+
*
45+
*
46+
* 1 <= nums.length <= 10^4
47+
* -10^4 <= nums[i] <= 10^4
48+
* nums 按 严格递增 顺序排列
49+
*
50+
*
51+
*/
52+
53+
#include <vector>
54+
55+
using namespace std;
56+
57+
// Definition for a binary tree node.
58+
struct TreeNode {
59+
int val;
60+
TreeNode *left;
61+
TreeNode *right;
62+
TreeNode() : val(0), left(nullptr), right(nullptr) {}
63+
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
64+
TreeNode(int x, TreeNode *left, TreeNode *right)
65+
: val(x), left(left), right(right) {}
66+
};
67+
68+
// @lc code=start
69+
/**
70+
* Definition for a binary tree node.
71+
* struct TreeNode {
72+
* int val;
73+
* TreeNode *left;
74+
* TreeNode *right;
75+
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
76+
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
77+
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left),
78+
* right(right) {}
79+
* };
80+
*/
81+
class Solution {
82+
public:
83+
TreeNode *sortedArrayToBST(vector<int> &nums) {
84+
if (nums.empty()) {
85+
return nullptr;
86+
}
87+
if (nums.size() < 2) {
88+
return new TreeNode(nums[0]);
89+
}
90+
91+
return sortedArrayToBST(nums, 0, nums.size() - 1);
92+
}
93+
94+
private:
95+
TreeNode *sortedArrayToBST(vector<int> &nums, int l, int r) {
96+
if (l > r) {
97+
return nullptr;
98+
}
99+
int mid = (l + r + 1) / 2;
100+
TreeNode *root = new TreeNode(nums[mid]);
101+
root->left = sortedArrayToBST(nums, l, mid - 1);
102+
root->right = sortedArrayToBST(nums, mid + 1, r);
103+
return root;
104+
}
105+
};
106+
// @lc code=end

‎cpp/leetcode/179.最大数.cpp

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
/*
2+
* @lc app=leetcode.cn id=179 lang=cpp
3+
*
4+
* [179] 最大数
5+
*
6+
* https://leetcode.cn/problems/largest-number/description/
7+
*
8+
* algorithms
9+
* Medium (41.13%)
10+
* Likes: 1125
11+
* Dislikes: 0
12+
* Total Accepted: 197.3K
13+
* Total Submissions: 479.6K
14+
* Testcase Example: '[10,2]'
15+
*
16+
* 给定一组非负整数
17+
* nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。
18+
*
19+
* 注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。
20+
*
21+
*
22+
*
23+
* 示例 1:
24+
*
25+
*
26+
* 输入:nums = [10,2]
27+
* 输出:"210"
28+
*
29+
* 示例 2:
30+
*
31+
*
32+
* 输入:nums = [3,30,34,5,9]
33+
* 输出:"9534330"
34+
*
35+
*
36+
*
37+
*
38+
* 提示:
39+
*
40+
*
41+
* 1 <= nums.length <= 100
42+
* 0 <= nums[i] <= 10^9
43+
*
44+
*
45+
*/
46+
#include <algorithm>
47+
#include <string>
48+
#include <vector>
49+
using namespace std;
50+
51+
// @lc code=start
52+
class Solution {
53+
public:
54+
string largestNumber(vector<int> &nums) {
55+
if (nums.empty()) {
56+
return "";
57+
}
58+
vector<string> arr(nums.size());
59+
for (size_t i = 0; i < nums.size(); i++) {
60+
arr[i] = to_string(nums[i]);
61+
}
62+
sort(arr.begin(), arr.end(), [](const auto &a, const auto &b) {
63+
return a + b > b + a; // 3, 34 and 3, 32
64+
});
65+
if (arr[0] == "0") {
66+
return "0";
67+
}
68+
string ret;
69+
for (const auto &s : arr) {
70+
ret += s;
71+
}
72+
return ret;
73+
}
74+
};
75+
// @lc code=end

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /