美文网首页
剑指offer1-3题总结

剑指offer1-3题总结

作者: 艾剪疏 | 来源:发表于2018-04-01 11:04 被阅读4次

1 二维数组中的查找

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

1 2 3
4 5 6
7 8 9

分析:
1 根据输入的二维数组的规律可知:(1)右上角的数字,左边的数字都比它小,下边的数字都比它大;(2)左下角的数字,右边的数字都比它大,上边的数字都比它小。
2 根据这个规律,可以确定左下或右上的一个数,基于这个数的规律,进行数字判别计算。

/**
     * 通过二维数组的规律
     * 矩阵是有序的,从左下角来看,向上数字递减,向右数字递增,
     * 因此从左下角开始查找,当要查找数字比左下角数字大时。右移
     * 要查找数字比左下角数字小时。上移
     * 从右上角开始查找,当要查找数字比右上角数字大时。下移
     * 要查找数字比右上角数字小时。左移
     * @param:
     * @return:
     * @date: 2018-3-12  
     */
    public static boolean Find1(int target, int [][] array) {
        int row = array.length-1;
        int col = 0;

        while(row>=0 && col<=array.length-1){
            if(target == array[row][col]){
                return true;
            }else if(target >= array[row][col]){
                col++;
            }else{
                row--;
            }
        }
        return false;
    }

2 替换空格

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

分析:
1 初始化新的数据结构存储结果;(重点)
2 遍历字符串,找到空格;
3 根据不同情况,将不同的数据填充到新的存储结构中;

public String replaceSpace(StringBuffer str) {
            StringBuilder sb = new StringBuilder(); 
            for(int i=0;i<str.length();i++){
               if(str.charAt(i) == ' '){//charAt比较不能用equals
                    sb.append("%20");   
                }else{
                    sb.append(str.charAt(i));
                }
            }
           return sb.toString();
        }

使用ascll码方式判断(更优)

回车,ASCII码13
换行,ASCII码10
空格,ASCII码32

    /**
     * 请实现一个函数,将一个字符串中的每个空格替换成“%20”。
     * 例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
     * @param str
     * @return
     */
    public static String replaceSpace(StringBuffer str){
        StringBuffer resStr = new StringBuffer();
        for (int i = 0; i < str.length(); i++) {
            if(str.charAt(i) == 32){
                resStr.append("%20");
            }else{
                resStr.append(str.charAt(i));
            }
        }
        return resStr.toString();
    }

3 从尾到头打印链表

输入一个链表,从尾到头打印链表每个节点的值。

分析:
1 怎样创建链表?
2 怎样遍历链表?
3 将ArrayList从尾到头打印,要怎么实现?
4 堆栈和递归的特点。

链表结构如下:

class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}

创建链表的操作

static ListNode head;

static void addNode(ListNode node){
    ListNode temp = null;
    if(head == null){
        head = node;
        return;
    }
    temp  =  head;
    while(temp.next != null){
          temp = temp.next;
    }
    temp.next = node;
}

使用递归的特点实现

    public static ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        ArrayList<Integer> resArrayList = new ArrayList<Integer>();
        if (listNode != null){
            printListFromTailToHead(listNode.next);
            resArrayList.add(listNode.val);
        }
        return resArrayList;
    }

使用堆栈的特性实现

public static ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
      Stack<Integer> stack = new Stack<>();
      while(listNode.next != null){
          stack.push(listNode.val);
     }
     ArrayList<Integer> list = new ArrayList<>();
     while(!stack.isEmpty()){
           list.add(stack.pop());
    }
    return list;
}

P.S.
总之,看到一个问题,首先要搞懂题目,然后明白如何处理。

相关文章

  • 剑指offer1-3题总结

    1 二维数组中的查找 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请...

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

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

  • 算法面试问题总结(重点准备)

    1.Coding方面 剑指offer和leetcode(重点) 常见算法题总结 最长不重复子序列 DP(01背包问...

  • 剑指offer数据结构

    剑指offer线性数据结构 剑指offer是找工作开始后刷的第一本书,刷题用牛客网。这本书可以说是已经总结归纳的很...

  • 剑指offer 所有题目总结

    剑指offer 所有的题目总结

  • 算法 | 一周刷完《剑指Offer》 Day6:第61~66题

    写在前面 本系列包含《剑指Offer》66道算法题,一周刷完,这是完结篇,撒花!系列汇总:剑指Offer 66题 ...

  • 剑指offer

    因为很多题目跟力扣上的很相似,所以剑指offer上的就挑着总结吧... 1. 二进制中1的个数 原题 做这个题本...

  • 剑指offer刷题......

    学习 1.二维数组中的查找 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排...

  • 剑指offer算法题

    在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样...

  • 剑指offer编程题

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

网友评论

      本文标题:剑指offer1-3题总结

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