美文网首页剑指offer
剑指offer-java(一)

剑指offer-java(一)

作者: Mouse_Hang | 来源:发表于2019-06-14 15:38 被阅读130次

1、二维数组中的查找

题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

解题思路:
1)遍历数组,查找是否含有该整数

public class Solution {
    public boolean Find(int target, int [][] array) {
        int leng = array.length;
        boolean b = false;
        a: for(int i=0; i<leng; i++) {
            for(int j=0; j<array[i].length; j++) {
                if(target == array[i][j]) {
                    b = true;
                    break a;
                }
            }
        }
        return b;
    }
}

2)在每一行数组中使用二分法进行查找

public class Solution {
    public boolean Find(int target, int [][] array) {
        //利用二分法查找
        int leng = array.length;
        boolean jud = false;
        for(int i=0; i<leng; i++) {
            int max = array[i].length - 1;
            int min = 0;
            while(min <= max){
                int avg = (max + min) / 2;
                if(array[i][avg] == target) {
                    jud = true;
                    break ;
                }else if(target < array[i][avg]) {
                    max = avg - 1;
                }else {
                    min = avg + 1;
                }
            }
        }
        return jud;
    }
}

3)利用数组特性,从数组的左下角元素array[row][column]开始判断,若target小于array[row][column],则说明target在array[row][column]所在行的上方,则row-1;若target大于array[row][column],则说明target在array[row][column]所在列的右方,则column+1。

public class Solution {
    public boolean Find(int target, int [][] array) {
        int row = array.length-1;
        int column = 0;
        while(row>=0 && column<array[0].length) {
            if(target<array[row][column]) {
                row--;
            }else if(target == array[row][column]) {
                return true;
            }else {
                column++;
            }
        } 
        return false;
    }
}

2、替换空格

题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

解题思路:
遍历字符串,判断该字符是否为空格,若为空格,将其替换为“%20”。

public class Solution {
    public String replaceSpace(StringBuffer str) {
        for(int i=0; i<str.length(); i++) {
            if(str.charAt(i) == ' ') {
                str.replace(i,i+1,"%20");
            }
        }
        String s = new String(str);
        return s;
    }
}

相关文章

  • 剑指offer-java(一)

    1、二维数组中的查找 题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一...

  • 剑指

    遥望中原九点烟,风云直上七重天。 今朝再向江湖去,一剑流星谁比肩? 2011.10(1488)

  • 剑指

    1. 二维数组中查找 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照...

  • 全网最全剑指offer题目解答

    【剑指offer】Java版代码(完整版) 【剑指offer】1-10题 【剑指offer】11-20题 【剑指o...

  • 剑指offer(一)

    1.二维数组中的查找 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照...

  • 剑指offer(一)

    1.在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序...

  • 剑指Offer(一)

    二维数组中的查找 题目 在二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序,判断...

  • 剑指offer(一)

    1.C++ 空类型的实例中不包含任何信息,但是sizeof的值为1,因为声明该类型的实例时,必须在内存中占有一定的...

  • 剑指Offer(一)

    题目一:二维数组中的查找 题目描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增...

  • 剑指Offer(一)

    题目汇总03.数组中重复的数字(简单),本题考查数组04.二维数组中的查找(简单),本题考查数组05.替换空格,本...

网友评论

    本文标题:剑指offer-java(一)

    本文链接:https://www.haomeiwen.com/subject/ddzufctx.html