zoukankan      html  css  js  c++  java
  • 南柯一梦

    一、栈和队列

    1.设计一个有getMin功能的栈

    定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
    import java.util.Stack;
    
    class Main {
        Stack<Integer> dataStack = new Stack<>();
        Stack<Integer> minStack = new Stack<>();
        public static void main(String[] args) {
            Main stack = new Main();
            stack.push(11);
            stack.push(2);
            stack.pop();
            stack.push(70);
            stack.push(51);
            System.out.println(stack.getMin());
            stack.push(4);
            stack.push(113);
            System.out.println(stack.getMin());
        }
        public void push(int num) {
            if(minStack.isEmpty()) 
                minStack.push(num);
            if(num > minStack.peek()) {
                minStack.push(minStack.peek());
            } else {
                minStack.push(num);
            }
            dataStack.push(num);
        }
        public int pop() {
            if(dataStack.isEmpty()) {
                throw new RuntimeException("Your stack is empty.");
            }
            minStack.pop();
            return dataStack.pop();
        }
        public int getMin() {
            if(minStack.isEmpty()) {
                throw new RuntimeException("Your stack is empty.");
            }
            return minStack.peek();
        }
    }
    class Solution {
        public int numIslands(char[][] grid) {
            
            if(grid == null || grid.length <= 0 || grid[0].length <= 0){
                return 0;
            }
            int ans = 0;
            int n = grid.length;
            int m = grid[0].length;
            for(int i=0; i<n; i++){
                for(int j=0; j<m; j++){
                    if(grid[i][j] == '1'){
                        ans++;
                        dfs(grid,i,j,n,m);
                    }
                }
            }
            return ans;
        }
        public void dfs(char[][] mat, int x, int y, int n, int m){
            if(x<0 || y<0 || x>=n || y>=m || mat[x][y] != '1') return;
            mat[x][y]='2';
            dfs(mat,x+1,y,n,m);
            dfs(mat,x-1,y,n,m);
            dfs(mat,x,y+1,n,m);
            dfs(mat,x,y-1,n,m);
        }
    }
    200. 岛屿的个数
    class Solution {
        public int maxAreaOfIsland(int[][] grid) {
            if(grid==null || grid.length==0 || grid[0].length==0) return 0;
            int n = grid.length;
            int m =  grid[0].length;
            int ans = 0;
            for(int i=0; i<n; i++)
                for(int j=0; j<m; j++){
                    if(grid[i][j] == 1){
                        int cnt = dfs(grid,i,j,n,m);
                        ans = Math.max(ans,cnt);
                    }
                }
            return ans;
        }
        
        public int dfs(int[][] a, int x, int y, int n, int m){
            int ans = 1;
            if(x<0 || y<0 || x>=n || y>=m || a[x][y] != 1) return 0;
            a[x][y] = 2;
            ans += dfs(a,x+1,y,n,m);
            ans += dfs(a,x-1,y,n,m);
            ans += dfs(a,x,y+1,n,m);
            ans += dfs(a,x,y-1,n,m);
            return ans;
         }
    }
    695. 岛屿的最大面积
  • 相关阅读:
    【二分】XMU 1587 中位数
    【动态规划】XMU 1560 新ACM规则
    【最短路】Vijos P1046 观光旅游
    【递归】Vijos P1114 FBI树(NOIP2004普及组第三题)
    一周多没打代码了。。
    6.4 文件与文件夹操作
    6.3.4 使用marshal 模块操作二进制文件
    6.3.3 使用 shelve 模块操作二进制文件
    6.3.2 使用struct模块读写二进制文件
    6.3.1 使用 pickle 模块读写二进制文件
  • 原文地址:https://www.cnblogs.com/Roni-i/p/10582244.html
Copyright © 2011-2022 走看看