“开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 八 天,点击查看活动详情”
力扣9.回文数
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
- 例如,
121是回文,而123不是。
整数转为字符串来解决
class Solution {
public boolean isPalindrome(int x) {
int abs = Math.abs(x);
String str = String.valueOf(x);
for(int i=0;i<str.length();i++){
if(str.charAt(i)!=str.charAt(str.length()-i-1))return false;
}
return true;
}
}
剑指offer
栈里面使用add和push的不同作用,这里一开始想用add但发现无法过样例。
发现add是继承自Vector的方法,返回值boolean,push是stack自带的方法,这里看官方题解里面new LinkedList。
LinkedList和ArrayDeque都可以模拟栈、队列,差别是LinkedList插入删除快,
ArrayDeque内部是数组形式存储数据,查询方便,插入删除慢,这里主要作用是插入删除最后一个值,
所以用链表更好一些。等于是将链表传给了Deque,可以调用其方法进行插入删除末尾数字。
这里声明栈时如果使用list,由于list没有内置的获取末尾值的函数,
必须传入索引才可以拿值,如果要直接删等于要用队列再实现栈的功能,非常麻烦,这里直接使用
deque和queue的关系:
deque是queue的子接口,deque常用子类包括LinkedLis、ArrayDeque,Deque是双端队列,可以peekFirst,pollFirst。这里发现取值每次去的都是队列头部的值,peek,感觉这里应该拿取队尾的值,不知道为什么要取队首。看官方动图解释这里应该取队尾的元素。
deque的方法里可以删除队头队尾元素,添加队头队尾元素也都可以实现
使用Deque - 廖雪峰的官方网站 (liaoxuefeng.com)
class MinStack {
Deque<Integer> sta;
Deque<Integer> minSta;
/** initialize your data structure here. */
public MinStack() {
sta = new ArrayDeque<Integer>();
minSta = new ArrayDeque<Integer>();
minSta.push(Integer.MAX_VALUE);
}
public void push(int x) {
sta.push(x);
minSta.push(Math.min(minSta.peek(),x));
}
public void pop() {
sta.pop();
minSta.pop();
}
public int top() {
return sta.peek();
}
public int min() {
return minSta.peek();
}
}