牛客刷题——剑指offer

简介: 牛客刷题——剑指offer



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

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

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

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

JZ6 从尾到头打印链表🏀

从尾到头打印链表

题目描述🥌:

4bf9bd07cf774628a2fed0d79fac2306.png

解题思路:

两种方法

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


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

方法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<Integer> printListFromTailToHead(ListNode listNode) {
      ArrayList<Integer> list= new ArrayList<>();
      Stack<Integer> stack =new Stack<>();
        while(listNode!=null){
            stack.push(listNode.val);
            listNode=listNode.next;
        }
        while(!stack.empty()){ //如果栈不为空就打印
            list.add(stack.pop()); //将list添加栈顶元素出站并返回
        }
        return list;
    }
}


过~~~~辣~~~

JZ5 替换空格🛶

替换空格

题目描述🥽

1d97ba84b4c74f298e4923421a1be5c6.png


解题思路⏳:

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<s.length();i++){
            char ch=s.charAt(i);
            if(ch==' '){ //遇到空格 就追加%20
                sb.append("%20");
            }else{
                sb.append(ch); //没有就添加遍历的字符
            }
        }
        return sb.toString(); //返回字符串格式
        // write code here
    }
}

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

491d6de6fbc94d17878d1e826a1a36e7.png

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

过 过 过 辣~~~~

JZ4 二维数组中的查找

题目描述♟:

8f2bbcaec74d46f3a13dd37d983167af.png

解题思路:

由于行列递增,可以得出:
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;i<n;i++){
            for(int j=0;j<array[i].length;j++){
                if(array[i][j]==target){ //找到就返回true
                    return true;
                }else if(array[i][j]>target) //大于的话 就break 
                    break;
                else if(array[i][0]>target) 
        //如果第一列的元素大于target那么后面不可能找到taget
                    flag=false;
            }
            if(!flag)  break;
        }
         return false;
    }
}


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

还等什么 快注册起来跟小王同学一起刷题吧

相关文章
|
6月前
leetcode24刷题打卡
leetcode24刷题打卡
25 0
|
6月前
|
算法
leetcode202刷题打卡
leetcode202刷题打卡
26 0
|
6月前
|
算法
leetcode1刷题打卡
leetcode1刷题打卡
39 0
|
6月前
刷题之Leetcode206题(超级详细)
刷题之Leetcode206题(超级详细)
50 0
刷题之Leetcode206题(超级详细)
|
6月前
|
算法
刷题之Leetcode34题(超级详细)
刷题之Leetcode34题(超级详细)
24 0
|
6月前
|
Java
刷题之Leetcode19题(超级详细)
刷题之Leetcode19题(超级详细)
37 0
|
6月前
leetcode232刷题打卡
leetcode232刷题打卡
25 0
|
测试技术 索引
leetcode刷题(2)
各位朋友们,又是新的一天,不知道大家过得怎样?今天是我leedcode刷题系列的第二篇,那么废话不多说,直接进入我们今天的主题。
|
Java 测试技术 C语言
leetcode刷题(4)
各位朋友们,大家好。这两天我将为大家分享我在学习栈的过程中遇到的题目,我们一起来看看。