OJ
OJ分类总结
零七七077
且慢
展开
-
OJ_堆
1.数组中的第K个最大元素: 在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 class Solution { public: int findKthLargest(vector<int>& nums, int k) { priority_queue<int> q; //堆 for(auto e:nums){ q.push(e);原创 2021-04-16 23:30:51 · 142 阅读 · 0 评论 -
OJ_数学
1.二进制中1的个数: 请实现一个函数,输入一个整数(以二进制串形式),输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。 class Solution { public: int hammingWeight(uint32_t n) { int count=0; for(int i=0;i<32;++i){ if((n>>i)&1==1)原创 2021-04-07 21:18:59 · 147 阅读 · 0 评论 -
OJ_栈/队列
1.逆波兰表达式的求值: 根据 逆波兰表示法,求表达式的值。有效的算符包括 +、-、*、/ 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。 class Solution { public: int evalRPN(vector<string>& tokens) { //用一个栈来存放操作数 //遍历后缀表达式:如果是操作数则入栈; //如果是操作符,则将栈顶元素和它下面一个元素出栈(先出栈的作右操作数),进行运算后再入栈原创 2021-04-10 23:57:06 · 177 阅读 · 0 评论 -
OJ_数组/二分查找
1.旋转数组的最小数字 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。 class Solution { public: int minArray(vector<int>& numbers) { //二分查找,最小值一定是这两个子数组的分界线 int low=0; //指向左原创 2021-03-28 16:48:42 · 126 阅读 · 0 评论 -
OJ_链表
1.环形链表1: /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: bool hasCycle(ListNode *head) { //快慢指针 List原创 2021-03-27 17:48:20 · 974 阅读 · 3 评论