zoukankan      html  css  js  c++  java
  • 2020.7.17 刷题

    35. 搜索插入位置

    二分查找注意下标:

    class Solution {
        public int searchInsert(int[] nums, int target) {
            int n = nums.length;
            if(n == 0) return 0;
            int start = 0, end = n-1;
            int mid = (end - start)/2 + start;
            while(end > start){
                if(nums[mid] > target){
                    end = mid - 1;
                }else if(nums[mid] < target){
                    start = mid + 1;
                }else return mid;
                mid = (end - start)/2 + start;
            }
            return  nums[mid] >= target ? mid : mid+1;
        }
    }

    785. 判断二分图

    可以使用dfs和bfs,以及并查集

    前两个遍历图给图上色,如果存在一个节点上了两种颜色则不是二分图

    java dfs

    public boolean isBipartite(int[][] graph) {
            int[] visited = new int[graph.length];
    
            for (int i = 0; i < graph.length; i++) {
                if(visited[i] == 0 && !dfs(graph, i, 1, visited))
                    return false;
            }
            return true;
        }
        public boolean dfs(int[][]graph, int v, int color, int[]visted){
            if(visted[v] != 0){
                return visted[v] == color;
            }
            visted[v] = color;
            for (int x : graph[v]) {
                if(!dfs(graph, x, -color, visted))
                    return false;
            }
            return true;
        }

    bfs

    public boolean isBipartite(int[][] graph) {
            int[] visited = new int[graph.length];
            Queue<Integer> queue = new LinkedList<Integer>();
    
            for (int i = 0; i < graph.length; i++) {
                if(visited[i] != 0){
                    continue;
                }
                queue.offer(i);
                visited[i] = 1;
                while(!queue.isEmpty()){
                    int v = queue.poll();
                    for(int x : graph[v]){
                        if(visited[x] == visited[v]){
                            return false;
                        }
                        if (visited[x] == 0){
                            visited[x] = -visited[v];
                            queue.offer(x);
                        }
                    }
                }
            }
    
            return true;
        }

    并查集 概念

     
  • 相关阅读:
    获取枚举Description的Name
    MVC 3 RequiredIf validator for multiple values
    js关闭页面(兼容浏览器)
    js实现复制到剪切板
    Reverse Integer
    303. Range Sum Query
    326.Power of Three
    328. Odd Even Linked List
    面试基础知识点
    javaSE学习博客与笔记
  • 原文地址:https://www.cnblogs.com/shish/p/13330532.html
Copyright © 2011-2022 走看看