网站都是程序员做的吗,android 解析 wordpress,wordpress程序覆盖,郑州百度分公司目录 1633. 各赛事的用户注册率题目链接表要求知识点思路代码 122. 买卖股票的最佳时机 II题目链接标签思路代码 239. 滑动窗口最大值题目链接标签思路代码 1633. 各赛事的用户注册率
题目链接
1633. 各赛事的用户注册率
表
表Users有字段user_id和user_name。表Register有… 目录 1633. 各赛事的用户注册率题目链接表要求知识点思路代码 122. 买卖股票的最佳时机 II题目链接标签思路代码 239. 滑动窗口最大值题目链接标签思路代码 1633. 各赛事的用户注册率
题目链接
1633. 各赛事的用户注册率
表
表Users有字段user_id和user_name。表Register有字段contest_id和user_id。
要求
编写解决方案统计出各赛事的用户注册百分率保留两位小数。返回的结果表按 percentage 的 降序 排序若相同则按 contest_id 的 升序 排序。
知识点
rount()四舍五入函数。count()统计个数函数。多表查询from后跟多张表然后使用where限制笛卡尔积的部分数据多表查询的结果是两张表排列组合的结果这个结果被称为笛卡尔积。子表查询子表查询就是将从表查询到的结果作为另一个表放在from后边。order by desc/asc排序比如order by num表示按num进行默认升序排序效果等价于order by num ascorder by num desc表示按num进行降序排序。
思路
要求各赛事的用户注册百分率首先要求出参加各赛事的用户数和用户的总数求用户的总数可以键一张子表然后用前者除以后者就可以得出各赛事的用户注册百分率但要注意的是求出来的百分率要乘100然后再根据题目中的两个条件进行排序。
代码
selectcontest_id,round(count(*) * 100 / cnt.num, 2) percentage
fromUsers s,Register r,(selectcount(*) numfromUsers) cnt
wheres.user_id r.user_id
group bycontest_id
order bypercentage desc,contest_id122. 买卖股票的最佳时机 II
题目链接
122. 买卖股票的最佳时机 II
标签
贪心 数组 动态规划
思路
本题的股票可以随时卖和买所以不需要计划的很长远只要一天的价格比前一天的高就在前一天买然后在这天卖使用了一种贪心的思想只顾当前局部的最优解局部最优解的总和就是全局最优解。
代码
class Solution {public int maxProfit(int[] prices) {int i 1, res 0;while (i prices.length) {int profit prices[i] - prices[i - 1];if (profit 0) {res profit;}i;}return res;}
}239. 滑动窗口最大值
题目链接
239. 滑动窗口最大值
标签
队列 数组 滑动窗口 单调队列 堆优先队列
思路
本题建议使用优先队列来解答优先队列指的是插入队列的所有元素都有一个优先级按照优先级的大小进行排序优先级越大或越小越靠近队列头部或尾部其中优先级可以是数字的大小也可以是字符串的长度等可以量化的数量。 优先队列的实现也很简单在这个类中内置一个双端队列从头部执行获取和删除的操作从尾部执行添加的操作每次添加时从尾部向前扫描直到扫描到优先级比待添加元素的优先级高的元素将这些优先级低于待添加元素优先级的元素从队列中删除。 了解优先队列的实现后就可以开始做题了。把滑动窗口想象成一个优先队列每次滑动时都往队列中添加一个值按理来说也应该从队列中删除一个值但其实不然在这个优先队列中只有最大值会被使用到所以只要那个该删除的值不是最大值就不需要删除它。
代码
class Solution {public int[] maxSlidingWindow(int[] nums, int k) {int index 0;int[] res new int[nums.length - k 1];PriorityQueue queue new PriorityQueue();for (int i 0; i nums.length; i) {// 队列中已经有k个元素了并且该队列的最大值还等于窗口前面的元素对于这种队列取出这个最大值if (i k nums[i - k] queue.peek()) {queue.poll();}queue.offer(nums[i]);// 从第k - 1个数开始if (i (k - 1)) {res[index] queue.peek();}}return res;}private static class PriorityQueue {LinkedListInteger deque new LinkedList();int peek() {return deque.peekFirst();}void poll() {deque.pollFirst();}void offer(int n) {while (!deque.isEmpty() deque.peekLast() n) {deque.pollLast();}deque.offerLast(n);}}
}