Skip to content

Commit c6ae2ab

Browse files
committed
去掉 std::
1 parent 0afe228 commit c6ae2ab

9 files changed

+71
-71
lines changed

C++/LeetCodet题解(C++版).pdf

-286 Bytes
Binary file not shown.

C++/chapBruteforce.tex

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ \subsubsection{代码}
4141
vector<vector<int> > subsets(vector<int> &S) {
4242
vector<vector<int> > result;
4343
vector<int> cur;
44-
std::sort(S.begin(), S.end()); // 本题对顺序有要求,需要排序
44+
sort(S.begin(), S.end()); // 本题对顺序有要求,需要排序
4545

4646
subsets(S, cur, 0, result);
4747
return result;
@@ -78,7 +78,7 @@ \subsubsection{代码}
7878
vector<vector<int> > subsets(vector<int> &S) {
7979
vector<vector<int> > result;
8080
vector<bool> selected(S.size(), false);
81-
std::sort(S.begin(), S.end()); // 本题对顺序有要求,需要排序
81+
sort(S.begin(), S.end()); // 本题对顺序有要求,需要排序
8282

8383
subsets(S, selected, 0, result);
8484
return result;
@@ -121,7 +121,7 @@ \subsubsection{代码}
121121
public:
122122
vector<vector<int> > subsets(vector<int> &S) {
123123
vector<vector<int> > result;
124-
std::sort(S.begin(), S.end()); // 本题对顺序有要求,需要排序
124+
sort(S.begin(), S.end()); // 本题对顺序有要求,需要排序
125125
const size_t n = S.size();
126126
vector<int> v;
127127

@@ -181,31 +181,31 @@ \subsubsection{代码}
181181
public:
182182
vector<vector<int> > subsetsWithDup(vector<int> &S) {
183183
vector<vector<int> > result;
184-
std::sort(S.begin(), S.end()); // 本题对顺序有要求,需要排序
184+
sort(S.begin(), S.end()); // 本题对顺序有要求,需要排序
185185

186186
unordered_map<int, int> count_map; // 记录每个元素的出现次数
187-
std::for_each(S.begin(), S.end(), [&count_map](int e) {
187+
for_each(S.begin(), S.end(), [&count_map](int e) {
188188
if (count_map.find(e) != count_map.end())
189189
count_map[e]++;
190190
else
191191
count_map[e] = 1;
192192
});
193193

194194
// 将map里的pair拷贝到一个vector里
195-
std::vector<pair<int, int> > elems;
196-
std::for_each(count_map.begin(), count_map.end(),
195+
vector<pair<int, int> > elems;
196+
for_each(count_map.begin(), count_map.end(),
197197
[&elems](const pair<int, int> &e) {
198198
elems.push_back(e);
199199
});
200-
std::sort(elems.begin(), elems.end());
201-
std::vector<int> path; // 中间结果
200+
sort(elems.begin(), elems.end());
201+
vector<int> path; // 中间结果
202202

203203
subsets(elems, 0, path, result);
204204
return result;
205205
}
206206

207207
private:
208-
static void subsets(const std::vector<pair<int, int> > &elems,
208+
static void subsets(const vector<pair<int, int> > &elems,
209209
size_t step, vector<int> &path, vector<vector<int> > &result) {
210210
if (step == elems.size()) {
211211
result.push_back(path);
@@ -232,15 +232,15 @@ \subsubsection{代码}
232232
public:
233233
vector<vector<int> > subsetsWithDup(vector<int> &S) {
234234
vector<vector<int> > result;
235-
std::sort(S.begin(), S.end()); // 本题对顺序有要求,需要排序
236-
std::vector<int> count(S.back() - S.front() + 1, 0);
235+
sort(S.begin(), S.end()); // 本题对顺序有要求,需要排序
236+
vector<int> count(S.back() - S.front() + 1, 0);
237237
// 计算所有元素的个数
238238
for(auto i = S.begin(); i != S.end(); i++) {
239239
count[*i - S[0]]++;
240240
}
241241

242242
// 每个元素选择了多少个
243-
std::vector<int> selected(S.back() - S.front() + 1, -1);
243+
vector<int> selected(S.back() - S.front() + 1, -1);
244244

245245
subsets(S, count, selected, 0, result);
246246
return result;
@@ -281,7 +281,7 @@ \section{Permutations} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
281281

282282
\subsection{next_permutation()}
283283
\label{sec:next-permutation}
284-
偷懒的做法,可以直接使用\fn{std::next_permutation}。如果是在OJ网站上,可以用这个API偷个懒;如果是在面试中,面试官肯定会让你重新实现。
284+
偷懒的做法,可以直接使用\fn{next_permutation}。如果是在OJ网站上,可以用这个API偷个懒;如果是在面试中,面试官肯定会让你重新实现。
285285

286286
\subsubsection{代码}
287287
\begin{Code}
@@ -290,11 +290,11 @@ \subsubsection{代码}
290290
public:
291291
vector<vector<int> > permute(vector<int> &num) {
292292
vector<vector<int> > result;
293-
std::sort(num.begin(), num.end());
293+
sort(num.begin(), num.end());
294294

295295
do {
296296
result.push_back(num);
297-
} while(std::next_permutation(num.begin(), num.end()));
297+
} while(next_permutation(num.begin(), num.end()));
298298
return result;
299299
}
300300
};
@@ -377,7 +377,7 @@ \subsubsection{代码}
377377
class Solution {
378378
public:
379379
vector<vector<int> > permute(vector<int>& num) {
380-
std::sort(num.begin(), num.end());
380+
sort(num.begin(), num.end());
381381

382382
vector<vector<int>> result;
383383
vector<int> p(num.size(), 0); // 中间结果
@@ -447,19 +447,19 @@ \subsubsection{代码}
447447
class Solution {
448448
public:
449449
vector<vector<int> > permuteUnique(vector<int>& num) {
450-
std::sort(num.begin(), num.end());
450+
sort(num.begin(), num.end());
451451

452452
unordered_map<int, int> count_map; // 记录每个元素的出现次数
453-
std::for_each(num.begin(), num.end(), [&count_map](int e) {
453+
for_each(num.begin(), num.end(), [&count_map](int e) {
454454
if (count_map.find(e) != count_map.end())
455455
count_map[e]++;
456456
else
457457
count_map[e] = 1;
458458
});
459459

460460
// 将map里的pair拷贝到一个vector里
461-
std::vector<pair<int, int> > elems;
462-
std::for_each(count_map.begin(), count_map.end(),
461+
vector<pair<int, int> > elems;
462+
for_each(count_map.begin(), count_map.end(),
463463
[&elems](const pair<int, int> &e) {
464464
elems.push_back(e);
465465
});
@@ -474,7 +474,7 @@ \subsubsection{代码}
474474

475475
private:
476476
size_t n;
477-
typedef std::vector<pair<int, int> >::const_iterator Iter;
477+
typedef vector<pair<int, int> >::const_iterator Iter;
478478

479479
void permute(Iter first, Iter last, vector<int> &p,
480480
vector<vector<int> > &result) {

C++/chapDFS.tex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -632,7 +632,7 @@ \subsubsection{代码}
632632
class Solution {
633633
public:
634634
vector<vector<int> > combinationSum(vector<int> &nums, int target) {
635-
std::sort(nums.begin(), nums.end());
635+
sort(nums.begin(), nums.end());
636636
vector<vector<int> > result; // 最终结果
637637
vector<int> intermediate; // 中间结果
638638
dfs(nums, target, 0, intermediate, result);
@@ -700,7 +700,7 @@ \subsubsection{代码}
700700
class Solution {
701701
public:
702702
vector<vector<int> > combinationSum2(vector<int> &nums, int target) {
703-
std::sort(nums.begin(), nums.end()); // 跟第 50 行配合,
703+
sort(nums.begin(), nums.end()); // 跟第 50 行配合,
704704
// 确保每个元素最多只用一次
705705
vector<vector<int> > result;
706706
vector<int> intermediate;

C++/chapDynamicProgramming.tex

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ \subsubsection{代码}
3737
int minimumTotal (vector<vector<int>>& triangle) {
3838
for (int i = triangle.size() - 2; i >= 0; --i)
3939
for (int j = 0; j < i + 1; ++j)
40-
triangle[i][j] += std::min(triangle[i + 1][j],
40+
triangle[i][j] += min(triangle[i + 1][j],
4141
triangle[i + 1][j + 1]);
4242

4343
return triangle [0][0];
@@ -320,13 +320,13 @@ \subsubsection{代码}
320320
vector<int> g(n, 0);
321321

322322
for (int i = 1, valley = prices[0]; i < n; ++i) {
323-
valley = std::min(valley, prices[i]);
324-
f[i] = std::max(f[i - 1], prices[i] - valley);
323+
valley = min(valley, prices[i]);
324+
f[i] = max(f[i - 1], prices[i] - valley);
325325
}
326326

327327
for (int i = n - 2, peak = prices[n - 1]; i >= 0; --i) {
328-
peak = std::max(peak, prices[i]);
329-
g[i] = std::max(g[i], peak - prices[i]);
328+
peak = max(peak, prices[i]);
329+
g[i] = max(g[i], peak - prices[i]);
330330
}
331331

332332
int maxProfit = 0;
@@ -517,7 +517,7 @@ \subsubsection{分析}
517517

518518
剪枝可以五花八门,要充分观察,充分利用信息,找到能让节点提前返回的条件。例如,判断两个字符串是否互为scamble,至少要求每个字符在两个字符串中出现的次数要相等,如果不相等则返回false。
519519

520-
加缓存,可以用数组或HashMap。本题维数较高,用HashMap,\fn{std::map}和\fn{std::unordered_map}均可。
520+
加缓存,可以用数组或HashMap。本题维数较高,用HashMap,\fn{map}和\fn{unordered_map}均可。
521521

522522
既然可以用记忆化搜索,这题也一定可以用动规。设状态为\fn{f[i][j][k]},表示长度为$i$,起点为\fn{s1[j]}和起点为\fn{s2[]}两个字符串是否互为scramble,则状态转移方程为
523523
\begin{Code}
@@ -573,7 +573,7 @@ \subsubsection{代码}
573573

574574
// 剪枝,提前返回
575575
int A[26]; // 每个字符的计数器
576-
std::fill(A, A + 26, 0);
576+
fill(A, A + 26, 0);
577577
for(int i = 0; i < length; i++) A[*(first1+i)-'a']++;
578578
for(int i = 0; i < length; i++) A[*(first2+i)-'a']--;
579579
for(int i = 0; i < 26; i++) if (A[i] != 0) return false;
@@ -637,7 +637,7 @@ \subsubsection{代码}
637637
template<> struct hash<Key> {
638638
size_t operator()(const Key & x) const {
639639
Iterator first1, last1, first2;
640-
std::tie(first1, last1, first2) = x;
640+
tie(first1, last1, first2) = x;
641641

642642
int result = *first1;
643643
result = result * 31 + *last1;

C++/chapGreedy.tex

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -173,8 +173,8 @@ \subsubsection{代码}
173173
int cur_min = prices[0]; // 当前最小
174174

175175
for (int i = 1; i < prices.size(); i++) {
176-
profit = std::max(profit, prices[i] - cur_min);
177-
cur_min = std::min(cur_min, prices[i]);
176+
profit = max(profit, prices[i] - cur_min);
177+
cur_min = min(cur_min, prices[i]);
178178
}
179179
return profit;
180180
}
@@ -255,14 +255,14 @@ \subsubsection{代码}
255255
int lengthOfLongestSubstring(string s) {
256256
const int ASCII_MAX = 26;
257257
int last[ASCII_MAX]; // 记录字符上次出现过的位置
258-
std::fill(last, last + ASCII_MAX, -1); // 0也是有效位置,因此初始化为-1
258+
fill(last, last + ASCII_MAX, -1); // 0也是有效位置,因此初始化为-1
259259
int len = 0, max_len = 0;
260260
for (size_t i = 0; i < s.size(); i++, len++) {
261261
if (last[s[i] - 'a'] >= 0) {
262262
max_len = max(len, max_len);
263263
len = 0;
264264
i = last[s[i] - 'a'] + 1;
265-
std::fill(last, last + ASCII_MAX, -1); // 重新开始
265+
fill(last, last + ASCII_MAX, -1); // 重新开始
266266
}
267267
last[s[i] - 'a'] = i;
268268
}

C++/chapImplement.tex

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -223,8 +223,8 @@ \subsubsection{代码}
223223
const int ASCII_MAX = 256;
224224
int appeared_count[ASCII_MAX];
225225
int expected_count[ASCII_MAX];
226-
std::fill(appeared_count, appeared_count + ASCII_MAX, 0);
227-
std::fill(expected_count, expected_count + ASCII_MAX, 0);
226+
fill(appeared_count, appeared_count + ASCII_MAX, 0);
227+
fill(expected_count, expected_count + ASCII_MAX, 0);
228228

229229
for (size_t i = 0; i < T.size(); i++) expected_count[T[i]]++;
230230

@@ -357,7 +357,7 @@ \subsubsection{代码}
357357
bool started = false; // 用于跳过前导0
358358
for (auto i = elems.rbegin(); i != elems.rend(); i++) {
359359
if (started) { // 如果多余的0已经都跳过,则输出
360-
result << std::setw(RADIX_LEN) << std::setfill('0') << *i;
360+
result << setw(RADIX_LEN) << setfill('0') << *i;
361361
} else {
362362
result << *i;
363363
started = true; // 碰到第一个非0的值,就说明多余的0已经都跳过

C++/chapLinearList.tex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@ \subsubsection{代码}
5454
OutIt removeDuplicates(InIt first, InIt last, OutIt output) {
5555
while (first != last) {
5656
*output++ = *first;
57-
first = std::find_if(first, last,
58-
std::bind1st(std::not_equal_to<int>(), *first));
57+
first = find_if(first, last,
58+
bind1st(not_equal_to<int>(), *first));
5959
}
6060

6161
return output;

C++/chapString.tex

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -153,8 +153,8 @@ \subsubsection{代码}
153153
string addBinary(string a, string b) {
154154
string result;
155155
const size_t max_len = a.size() > b.size() ? a.size() : b.size();
156-
std::reverse(a.begin(), a.end());
157-
std::reverse(b.begin(), b.end());
156+
reverse(a.begin(), a.end());
157+
reverse(b.begin(), b.end());
158158
int carry = 0;
159159
for (size_t i = 0; i < max_len; i++) {
160160
const int ai = i < a.size() ? a[i] - '0' : 0;
@@ -260,7 +260,7 @@ \subsubsection{代码}
260260
string longestPalindrome(string s) {
261261
const int len = s.size();
262262
int f[len][len];
263-
memset(f, 0, len * len * sizeof(int)); //TODO: std::fill, fill_n
263+
memset(f, 0, len * len * sizeof(int)); //TODO: fill, fill_n
264264
int maxL = 1, start = 0; // 最长回文子串的长度,起点
265265

266266
for (size_t i = 0; i < s.size(); i++) {

0 commit comments

Comments
 (0)