[leetcode]300-最长上升子序列
来源:力扣 (LeetCode) 链接:https://leetcode-cn.com/problems/longest-increasing-subsequence 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 一、题目描述 给定一个无序的整数数组,找到其中最长上升子序列的长 ... 阅读更多
来源:力扣 (LeetCode) 链接:https://leetcode-cn.com/problems/longest-increasing-subsequence 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 一、题目描述 给定一个无序的整数数组,找到其中最长上升子序列的长 ... 阅读更多
来源:力扣 (LeetCode) 链接:https://leetcode-cn.com/problems/house-robber 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 一、题目描述 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约 ... 阅读更多
来源:力扣 (LeetCode) 链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 一、题目描述 给定一个数组,它的第 i 个元素是一支给定股票第 ... 阅读更多
来源:力扣 (LeetCode) 链接:https://leetcode-cn.com/problems/coin-change 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 一、题目描述 给定不同面额的硬币 coins 和一个总金额 amount 。编写一个函数来计算可以凑成总 ... 阅读更多
来源:力扣 (LeetCode) 链接:https://leetcode-cn.com/problems/wildcard-matching 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 一、题目描述 给定一个字符串 (s) 和一个字符模式 (p) ,实现一个支持 '?' 和 ... 阅读更多
来源:力扣 (LeetCode) 链接:https://leetcode-cn.com/problems/matrix-cells-in-distance-order 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 一、题目描述 给出 R 行 C 列的矩阵,其中的单元格的整数坐标 ... 阅读更多
来源:力扣 (LeetCode) 链接:https://leetcode-cn.com/problems/split-array-largest-sum 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 一、题目描述 给定一个非负整数数组和一个整数 m,你需要将这个数组分成 m 个 ... 阅读更多
来源:力扣 (LeetCode) 链接:https://leetcode-cn.com/problems/next-greater-element-iii 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 一、题目描述 给定一个 32 位正整数 n,你需要找到最小的 32 位整数,其与 n ... 阅读更多
一、二分查找
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
template<typename T> int bin_search(const T data[], int left, int right, T target) { int mid; while (left <= right) { mid = (left + right) / 2; if (data[mid] > target) { right = mid - 1; } else if (data[mid] < target) { left = mid + 1; } else { return mid; } } return -1; } |
二、查找最后一个小于 n 的值
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
// 查找第一个大于目标的元素 template<typename T> int bin_search_first_greater(const T data[], int left, int right, T target) { int mid; while (left <= right) { mid = (left + right) / 2; if (data[mid] > target) { if (mid == left || data[mid - 1] < target) return mid; right = mid - 1; } else { left = mid + 1; } } return -1; } |
三、查找第一个大于 n 的值
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
template<typename T> int bin_search_last_less(const T *data, int left, int right, T target) { int mid; while (left <= right) { mid = (left + right) / 2; if (data[mid] < target) { if (mid == right || data[mid + 1] > target) return mid; left = mid + 1; } else { right = mid - 1; } } return -1; } |
四、查找第一个等于 n 的值 [cra ... 阅读更多
来源:力扣 (LeetCode) 链接:https://leetcode-cn.com/problems/reverse-string 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 一、题目描述 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形 ... 阅读更多