第 189 场力扣周赛题解

PS:好久没写计算几何了,最后一题一个简单的计算几何问题wa到快结束才过。。

5412. 在既定时间做作业的学生人数

思路:定义sum前缀和数组,令sum[startTime[i]]+1,sum[endTime[i]+1]-1,然后求一波前缀和即可,相信各位在做算法题已经见了很多次这种套路了。

class Solution {
    public int busyStudent(int[] startTime, int[] endTime, int queryTime) {
    	
    	int[] sum=new int[1010];
    	
    	for(int i=0;i

5413. 重新排列句子中的单词

思路:先将句子里的单词分离出来,然后按照题目要求的排序规则存储即可,只是要注意将首单词的首字母大写,并且若之前的首单词已经不是首单词了记得将该单词的首字母变小写。

class Solution {
	
	class node implements Comparable{
		String s;
		int id;
		public node(String s,int id) {
			this.s=s;
			this.id=id;
		}
		@Override
		public int compareTo(node o) {
			// TODO 自动生成的方法存根
			if(s.length()==o.s.length())
				return id-o.id;
			return s.length()-o.s.length();
		}
	}
	
    public String arrangeWords(String text) {
    	
    	StringBuilder str=new StringBuilder();
    	List list=new ArrayList<>();
    	
    	for(int i=0;i

5414. 收藏清单

思路:没什么要考察的地方,感觉是想考你对list和set中contains函数的查询复杂度?我是直接将list里的元素存于set里直接查找即可。

class Solution {
    public List peopleIndexes(List> favoriteCompanies) {
    	
    	int n=favoriteCompanies.size();
    	List list=new ArrayList<>();
    	List> st=new ArrayList<>();
    	
    	for(int i=0;i());
    		for(int j=0;jst.get(j).size())
    				continue;
    			int num=0;
    			for(int k=0;k

5415. 圆形靶内的最大飞镖数量

思路:一眼过去就是找圆心,根据基本的数学知识可以知道:已知两点和半径可以得到圆心。奈何没有板子,比赛时根据圆心方程式找圆心出现了不少问题,好歹最终是过了,但是太伤了,这里放一位大佬的找圆心方法:通过向量找。

class Solution {
	
	class Point{
		double x,y;
		public Point(double x,double y) {
			this.x=x;
			this.y=y;
		}
	}
	
	int ans;
	int[][] arr;
	
    public int numPoints(int[][] points, int r) {
    	
    	ans=0;
    	int n=points.length;
    	arr=points;
    	
    	for(int i=0;ir) continue;
    				
    				int cnt=0;
    				Point center=find(a,b,r);
    				
    				for(int k=0;k

 

你可能感兴趣的:(第 189 场力扣周赛题解)