算法1

来源:互联网 发布:java注解是什么 编辑:程序博客网 时间:2024/04/30 16:51
 public void draw(int m, int n) {        if (m <= 0 || n <= 0) {            return;        }        StringBuilder title = new StringBuilder();        for (int i = 0; i < m; i++) {            title.append("*");        }        StringBuilder notTitle = new StringBuilder();        notTitle.append("*");        int blanks = m - 2;        for (int i = 0; i < blanks; i++) {            notTitle.append(" ");        }        notTitle.append("*");        String titleStr = title.toString();        String notTitleStr = notTitle.toString();        System.out.println(titleStr);        int blankLines = n - 2;        for (int i = 0; i < blankLines; i++) {            System.out.println(notTitleStr);        }        if (blankLines >= 0) {            System.out.println(titleStr);        }        return;    }
 public int checkDuplicateNum(int[] nums) {        if (nums == null || nums.length < 2) {            return -1;        }        int[] position = {-1};        checkDuplaicateNumPartly(nums,0,nums.length-1,position);        return position[0];    }    private void checkDuplaicateNumPartly(int[] nums,int beginIndex,int endIndex,int[] position){        if(endIndex-beginIndex == nums[endIndex]-nums[beginIndex]){            return;        }else {            if(beginIndex+1==endIndex){                position[0] = beginIndex;                return;            }else {                checkDuplaicateNumPartly(nums,beginIndex,(beginIndex+endIndex)/2,position);                if(position[0]!=-1){                    return;                }                checkDuplaicateNumPartly(nums,(beginIndex+endIndex)/2,endIndex,position);            }        }    }
 public int checkDuplicateNumNoRecur(int[] nums) {        if (nums == null || nums.length < 2) {            return -1;        }        int beginIndex = 0;        int endIndex = nums.length - 1;        int mid = (beginIndex + endIndex) / 2;        while (true) {            if (nums[beginIndex] - nums[mid] != beginIndex - mid) {                if (beginIndex + 1 == mid) {                    return beginIndex;                } else {                    endIndex = mid;                    mid = (beginIndex + endIndex) / 2;                }            } else if (nums[mid + 1] - nums[endIndex] != mid + 1 - endIndex) {                if (mid + 2 == endIndex) {                    return mid;                } else {                    beginIndex = mid + 1;                    mid = (beginIndex + endIndex) / 2;                }            } else {                return mid;            }        }    }
    public String readChars(char[][] chars){        if(chars==null ||chars.length==0){            return "";        }        StringBuilder sb = new StringBuilder();        int beginLine = 0;        int endLine = chars.length-1;        int beginRaw = 0;        int endRaw = chars[0].length -1;        int nowLine = 0;        int nowRaw = 0;        int fangxiang = 0;//0:向右,1:向下,2:向左,3:向上        boolean flag = true;        while (flag){            sb.append(chars[nowLine][nowRaw]);            switch (fangxiang){                case 0:{                    if(nowRaw==endRaw){                        flag=false;                    } else if(++nowRaw==endRaw){                        beginLine++;                        fangxiang++;                    }                    break;                }                case 1:{                    if(nowLine==endLine){                        flag=false;                    } else if(++nowLine==endLine){                        endRaw--;                        fangxiang++;                    }                    break;                }                case 2:{                    if(nowRaw==beginRaw){                        flag=false;                    } else if(--nowRaw==beginRaw){                        endLine--;                        fangxiang++;                    }                    break;                }                case 3:{                    if(nowLine==beginLine){                        flag=false;                    }else if(--nowLine == beginLine){                        beginRaw++;                        fangxiang = ++fangxiang%4;                    }                    break;                }            }        }        return sb.toString();    }
0 0
原创粉丝点击