前言
作者简介:友友们大家好,我是你们的小王同学
个人主页:小王同学
系列专栏:牛客刷题专栏
推荐一款非常火的面试、刷题神器 牛客网
觉得小王写的不错的话 麻烦动动小手 点赞 收藏⭐ 评论
今天给大家带来的刷题系列是:剑指offer
剑指offer 刷题专属链接剑指offer
里面有非常多的题库 跟面经知识 真的非常良心了!!
今天给大家带来的是 刷题 剑指offer里的题目
剑指offer里的题目绝大部分都是面试常考题目
所以我们要熟练地刷上几遍
从尾到头打印链表
解题思路:
两种方法
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;
}
}
这一声清脆响亮的声音 我直接过辣~~
方法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;
}
}
过~~~~辣~~~
替换空格
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
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param s string字符串
* @return string字符串
*/
public String replaceSpace (String s) {
// write code here
return s.replaceAll(" ","%20");
}
}
过 过 过 辣~~~~
由于行列递增,可以得出:
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;
}
}
过辣~
牛客的oj测试也是非常好用的 还有代码补全功能 acm机制 简直绝绝子!
还等什么 快注册起来跟小王同学一起刷题吧(doge)牛客网