牛客刷题——剑指offer

 前言

作者简介:友友们大家好,我是你们的小王同学

个人主页:小王同学

系列专栏:牛客刷题专栏

推荐一款非常火的面试、刷题神器 牛客网

觉得小王写的不错的话 麻烦动动小手 点赞 收藏⭐  评论

今天给大家带来的刷题系列是:剑指offer

剑指offer 刷题专属链接剑指offer

 

 

 里面有非常多的题库 跟面经知识 真的非常良心了!!

今天给大家带来的是 刷题 剑指offer里的题目

剑指offer里的题目绝大部分都是面试常考题目 

所以我们要熟练地刷上几遍

JZ6 从尾到头打印链表

从尾到头打印链表

题目描述:

牛客刷题——剑指offer_第1张图片

解题思路:

两种方法

1.用线性表把节添加到里面 最后创建一个新的线性表 倒着输出即可

2.栈 的实现 根据栈后进先出的特点!

 代码实现:

方法1:


/**
*    public class ListNode {
*        int val;
*        ListNode next = null;
*
*        ListNode(int val) {
*            this.val = val;
*        }
*    }
*
*/
import java.util.ArrayList;
public class Solution {
    public ArrayList printListFromTailToHead(ListNode listNode) {
        ArrayList list =new ArrayList<>();
        while(listNode!=null){ //头结点不为空的情况下
            list.add(listNode.val); //把结点的值都添加进list中
            listNode=listNode.next; //往后遍历
        }
     ArrayList  ans  =new ArrayList<>();
        int n=list.size();
        for(int i=n-1;i>=0;i--){  //逆序输出
            ans.add(list.get(i));
        }
        return ans;
        
    }
}

牛客刷题——剑指offer_第2张图片

 这一声清脆响亮的声音 我直接过辣~~

方法2:

import java.util.*;
/**
*    public class ListNode {
*        int val;
*        ListNode next = null;
*
*        ListNode(int val) {
*            this.val = val;
*        }
*    }
*
*/
import java.util.ArrayList;
public class Solution {
    public ArrayList printListFromTailToHead(ListNode listNode) {
      ArrayList list= new ArrayList<>();
      Stack stack =new Stack<>();
        while(listNode!=null){
            stack.push(listNode.val);
            listNode=listNode.next;
        }
        while(!stack.empty()){ //如果栈不为空就打印
            list.add(stack.pop()); //将list添加栈顶元素出站并返回
            
        }
        return list;
        
    }
}

 牛客刷题——剑指offer_第3张图片

 过~~~~辣~~~

 JZ5 替换空格

替换空格

题目描述

牛客刷题——剑指offer_第4张图片

解题思路⏳:

java中字符串本身就是不能修改的 我们可以创建一个StringBuilder对象

对内容进行添加操作 

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param s string字符串 
     * @return string字符串
     */
    public String replaceSpace (String s) {
        StringBuilder sb= new StringBuilder();
        for(int i=0;i

还可以用java 自带的replaceAll方法更简单!

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param s string字符串 
     * @return string字符串
     */
    public String replaceSpace (String s) {
        // write code here
        return s.replaceAll(" ","%20");
    }
}

 过 过 过 辣~~~~

 JZ4 二维数组中的查找

题目描述♟:

牛客刷题——剑指offer_第5张图片

解题思路:

由于行列递增,可以得出:
a.在一列中的某个数字,其上的数字都比它小
b.在一行中的某个数字,其右的数字都比它大

public class Solution {
    public boolean Find(int target, int [][] array) {
      
        int n=array.length;
        if(n==0) return false;
        boolean flag=true;
        for(int i=0;itarget) //大于的话 就break 
                    break;
                else if(array[i][0]>target) 
        //如果第一列的元素大于target那么后面不可能找到taget
                    flag=false;
                    
                
                
            }
            if(!flag)  break;
              
            
           
        }
         return false;
    }
}

牛客刷题——剑指offer_第6张图片

 过辣~

牛客的oj测试也是非常好用的 还有代码补全功能 acm机制 简直绝绝子!

还等什么 快注册起来跟小王同学一起刷题吧(doge)牛客网

牛客刷题——剑指offer_第7张图片

你可能感兴趣的:(牛客刷题专栏,数据结构,java,数据结构)