• NC_18_ROTATEMATRIXNC_19_maxsumofSubarrayNC_20_restoreIpAddresses


    package org.example.interview.practice;
    
    /**
     * @author xianzhe.ma
     * @date 2021/8/14
     */
    
    public class NC_18_ROTATEMATRIX {
    
        public int[][] rotateMatrix(int[][] mat, int n) {
            // write code here
            // 对角线
            for (int i = 0; i < n; i++) {
                for (int j = i + 1; j < n; j++) {
                    int temp = mat[i][j];
                    mat[i][j] = mat[j][i];
                    mat[j][i] = temp;
                }
            }
    
            // 以竖轴翻转
            for (int i = 0; i < n; i++) {
                for (int j = 0; j < n / 2; j++) {
                    int temp = mat[i][j];
                    mat[i][j] = mat[i][n - 1 - j];
                    mat[i][n - 1 - j] = temp;
                }
            }
            return mat;
        }
    }
    package org.example.interview.practice;
    
    /**
     * @author xianzhe.ma
     * @date 2021/8/31
     */
    
    public class NC_19_maxsumofSubarray {
    
        public static int maxsumofSubarray(int[] arr) {
            // write code here
            //存放临时答案
            int thisSum = 0;
            //存放最终答案,注意初始化的值
            int ans = Integer.MIN_VALUE;
            int len = arr.length;
            for (int i = 0; i < len; i++) {
                //累加求和
                thisSum += arr[i];
                if (thisSum > ans) {
                    ans = thisSum;
                }
                //贪心,负数必然会拉低序列和
                if (thisSum < 0) {
                    thisSum = 0;
                }
            }
            return ans;
        }
    
        public static int maxsumofSubarray2(int[] arr) {
            // write code here
            int sum = 0;
            int max = Integer.MIN_VALUE;
    
            for (int value : arr) {
                sum = sum + value;
                if (sum > max) {
                    max = sum;
                }
                if (sum < 0) {
                    sum = 0;
                }
            }
    
            return max;
        }
    
        public static void main(String[] args) {
            int[] arr = {1, 2, -99, 5, -5};
            System.out.println(maxsumofSubarray2(arr));
        }
    }
    package org.example.interview.practice;
    
    import java.util.ArrayList;
    
    /**
     * @author xianzhe.ma
     * @date 2021/8/31
     */
    
    public class NC_20_restoreIpAddresses {
        /**
         *
         * @param s string字符串
         * @return string字符串ArrayList
         */
        public ArrayList<String> restoreIpAddresses (String s) {
            // write code here
            ArrayList<String> list=new ArrayList<>();
            if(s.length()==0)return list;
            backTrack(s,0,3,list);
            return list;
        }
        //i:本次插入的起始位置 cnt:剩余可插入'.'的次数
        public void backTrack(String s,int i,int cnt,ArrayList<String> list){
            if(cnt==0){
                String[] strs=s.split("\\."); //'.'要转义
                if(strs.length<4)return ; //保证插入得到4个子串,不会出现多个'.'相连的情况
                for(String str:strs){
                    if(str.length()>1&&str.charAt(0)=='0')return ; //排除有前导0的情况
                    if(Integer.parseInt(str)<0||Integer.parseInt(str)>255)return ; //排除不在范围的情况
                }
                list.add(s);
                return ;
            }
            if(i>=s.length())return ; //没插完就结束的情况
            int n=s.length();
            backTrack(s.substring(0,i+1)+"."+s.substring(i+1,n),i+2,cnt-1,list); //插入到1个字符之后
            if(i+2<n)backTrack(s.substring(0,i+2)+"."+s.substring(i+2,n),i+3,cnt-1,list); //插入到2个字符之后
            if(i+3<n)backTrack(s.substring(0,i+3)+"."+s.substring(i+3,n),i+4,cnt-1,list); //插入到3个字符之后
        }
    }
  • 相关阅读:
    CSS
    html5
    XHTML
    HTML
    git 教程 --git revert 命令
    Git 教程 --git merge 命令
    git 教程 --git reset 命令
    git 教程 --git cherry-pick 命令
    git 教程 --git stash命令
    git 教程 --git diff功能
  • 原文地址:https://www.cnblogs.com/juniorMa/p/15879485.html
Copyright © 2020-2023  润新知