第197场周赛

第197场周赛

  • 5460. 好数对的数目
  • 5461. 仅含 1 的子串数
  • 5211. 概率最大的路径

5460. 好数对的数目

class Solution {
    public int numIdenticalPairs(int[] nums) {
        int len = nums.length;
        if(len<=1){
            return 0;
        }
        int sum = 0;
        for(int i=0;i<len-1;i++){
            for(int j=i+1;j<len;j++){
                if(nums[i]==nums[j]){
                    sum++;
                }
            }
        }
        return sum;
    }
}

5461. 仅含 1 的子串数

class Solution {
    public int numSub(String s) {
        if(s==null || s.length()==0) {
    		return 0;
    	}
    	int len = s.length();
    	double sum=0;
    	int left =0 ;
    	int right = left;
    	while(left<len && right<len) {
    		if(s.charAt(right)=='0') {
    			left=right+1;
    			right=left;
    		}else if(s.charAt(right)=='1') {
    			sum=sum+(right-left+1.0);
    			right++;
    		}
    	}
        
    	double num = 1000000007;
    	return (int) (sum%num);
    }
}

5211. 概率最大的路径

图一直是我的弱项,大致有个想法,但是自己写不出来,看了大佬的代码才发现原来不难

class Solution {
    public double maxProbability(int n, int[][] edges, double[] succProb, int start, int end) {
            ArrayList<double[]>[] graph = new ArrayList[n];
	        for (int i = 0; i < n; i++) {
	            graph[i] = new ArrayList<>();
	        }
	        for (int i = 0; i < edges.length; i++) {
	            graph[edges[i][0]].add(new double[] { edges[i][1], succProb[i] });
	            graph[edges[i][1]].add(new double[] { edges[i][0], succProb[i] });
	        }
	        PriorityQueue<double[]> queue = new PriorityQueue<>((a, b) -> Double.compare(b[1], a[1]));
	        boolean[] visited = new boolean[n];
	        queue.add(new double[] { start, 1 });
	        while (!queue.isEmpty()) {
	            double[] head = queue.remove();
	            if (head[0] == end) {
	                return head[1];
	            } else if (!visited[(int) head[0]]) {
	                visited[(int) head[0]] = true;
	                for (double[] next : graph[(int) head[0]]) {
	                    queue.add(new double[] { next[0], head[1] * next[1] });
	                }
	            }
	        }
	        return 0;
    }
}

你可能感兴趣的:(LeetCode)