275. H 指数 II
35. 搜索插入位置
977. 有序数组的平方

275. H 指数 II

  1. int hIndex(vector<int> &citations) {
  2. int length = citations.size();
  3. int left = 0, right = length - 1;
  4. while (left <= right) {
  5. int mid = left + ((right - left) >> 1);
  6. if (citations[mid] >= length - mid) {
  7. right = mid - 1;
  8. } else {
  9. left = mid + 1;
  10. }
  11. }
  12. return length - left;
  13. }

35. 搜索插入位置

  1. class Solution {
  2. public:
  3. int searchInsert(vector<int> &nums, int target) {
  4. if (nums.empty()) {
  5. return -1;
  6. }
  7. int left = 0, right = nums.size() - 1;
  8. int index = -1;
  9. while (left <= right) {
  10. int mid = left + ((right - left) >> 1);
  11. if (nums[mid] >= target) {
  12. index = mid;
  13. right = mid - 1;
  14. } else if (nums[mid] < target) {
  15. left = mid + 1;
  16. } else {
  17. return mid;
  18. }
  19. }
  20. return index == -1 ? nums.size() : index;
  21. }
  22. };

977. 有序数组的平方

  1. class Solution {
  2. public:
  3. vector<int> sortedSquares(vector<int> &nums) {
  4. int n = nums.size();
  5. vector<int> res(n);
  6. int left = 0, right = n - 1;
  7. int index=n-1;
  8. while (left <= right) {
  9. if (abs(nums[left]) < abs(nums[right])) {
  10. res[index--] = nums[right] * nums[right];
  11. right--;
  12. } else {
  13. res[index--] = nums[left] * nums[left];
  14. left++;
  15. }
  16. }
  17. return res;
  18. }
  19. };