课程表

你这个学期必须选修numCourses门课程,记为0numCourses - 1

在选修某些课程之前需要一些先修课程。先修课程按数组prerequisites给出,其中 prerequisites[i] = [ai, bi],表示如果要学习课程ai则 必须先学习课程bi

例如,先修课程对[0, 1]表示:想要学习课程0,你需要先完成课程1

请你判断是否可能完成所有课程的学习?如果可以,返回true;否则,返回false

提示:

  • 1 <= numCourses <= 10^5
  • 0 <= prerequisites.length <= 5000
  • prerequisites[i].length == 2
  • 0 <= ai, bi < numCourses
  • prerequisites[i]中的所有课程对互不相同

搜索旋转排序数组

整数数组nums按升序排列,数组中的值互不相同。

在传递给函数之前,nums在预先未知的某个下标k0 <= k < nums.length)上进行了旋转,使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]](下标从0开始计数)。例如,[0,1,2,4,5,6,7]在下标3处经旋转后可能变为[4,5,6,7,0,1,2]。

给你旋转后的数组nums和一个整数target,如果nums中存在这个目标值target,则返回它的下标,否则返回-1。

提示:

  • 1 <= nums.length <= 5000
  • -10^4 <= nums[i] <= 10^4
  • nums中的每个值都 独一无二
  • 题目数据保证nums在预先未知的某个下标上进行了旋转
  • -10^4 <= target <= 10^4

翻转字符串里的单词

给你一个字符串s,逐个翻转字符串中的所有单词。

单词是由非空格字符组成的字符串。s中使用至少一个空格将字符串中的单词分隔开。

请你返回一个翻转s中单词顺序并用单个空格相连的字符串。

说明:

  • 输入字符串s可以在前面、后面或者单词间包含多余的空格。
  • 翻转后单词间应当仅用一个空格分隔。
  • 翻转后的字符串中不应包含额外的空格。

提示:

  • 1 <= s.length <= 10^4
  • s包含英文大小写字母、数字和空格' '
  • s中至少存在一个单词

删除二叉搜索树中的节点

给定一个二叉搜索树的根节点root和一个值key,删除二叉搜索树中的key对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。

一般来说,删除节点可分为两个步骤:

  1. 首先找到需要删除的节点;
  2. 如果找到了,删除它。

提示:

  • 节点数的范围$[0, 10^4]$.
  • $-10^5$ <= Node.val <= $10^5$
  • 节点值唯一
  • root是合法的二叉搜索树
  • $-10^5$ <= key <= $10^5$
|