# Leetcode Weekly Challenge 343

Problem 1 - [https://leetcode.com/contest/weekly-contest-343/problems/determine-the-winner-of-a-bowling-game/](https://leetcode.com/contest/weekly-contest-343/problems/determine-the-winner-of-a-bowling-game/)

```java
class Solution {
    public int isWinner(int[] p1, int[] p2) {
        
        int n = p1.length;

        if(n==0)
            return 0;
        if(n==1)
        {
            if(p1[0]==p2[0])
                return 0;
            else if(p1[0]>p2[0])
                return 1;
            else return 2;
        }
        
        
        int sum1 = p1[0];
        int sum2 = p2[0];
        
        boolean isTen1 = (p1[0]==10)? true:false;
        boolean isTen2 = (p2[0]==10)? true:false;
        
        for(int i=1; i<n; i++) {
            
            if(isTen1) {
                sum1+= 2*p1[i];
            }
            else {
                sum1+=p1[i];
            }
            
            if(isTen2) 
            {
                sum2+=2*p2[i];
            }
            else {
                sum2+=p2[i];
            }
            
            if(p1[i]==10 || p1[i-1]==10) {
                isTen1 = true;
            }
            else isTen1= false;
                        
            if(p2[i]==10 || p2[i-1]==10) {
                isTen2 = true;
            }
            else isTen2= false;
            
        }
        
        if(sum1==sum2)
            return 0;
        return (sum1>sum2)? 1:2;
        
    }
}
```

Problem 2 - [https://leetcode.com/contest/weekly-contest-343/problems/first-completely-painted-row-or-column/](https://leetcode.com/contest/weekly-contest-343/problems/first-completely-painted-row-or-column/)

```java
class Solution {
    public int firstCompleteIndex(int[] arr, int[][] mat) {
        
        int m = mat.length;
        int n = mat[0].length;
        
        int minIndex = Integer.MAX_VALUE;
        
        HashMap<Integer, Integer> hmap = new HashMap<>();
        for(int i=0; i<arr.length;i++) {
            hmap.put(arr[i],i);
        }
        
        // Row wise traversal 
        for(int i=0; i<m; i++) {
            int localMaxIndex = -1;
            for(int j=0; j<n; j++) {
                if(hmap.get(mat[i][j]) > localMaxIndex)
                    localMaxIndex = hmap.get(mat[i][j]);
            }
            if(localMaxIndex<minIndex)
                minIndex = localMaxIndex;
        }
        // column wise traversal
        for(int j=0; j<n; j++) {
            int localMaxIndex = -1;
            for(int i=0; i<m; i++) {
                if(hmap.get(mat[i][j]) > localMaxIndex)
                    localMaxIndex = hmap.get(mat[i][j]);
            }
            if(localMaxIndex<minIndex)
                minIndex = localMaxIndex;
        }
        
        return minIndex;
        
    }
}
```
