zoukankan      html  css  js  c++  java
  • 领扣(LeetCode)回文链表 个人题解

    请判断一个链表是否为回文链表。

    示例 1:

    输入: 1->2
    输出: false

    示例 2:

    输入: 1->2->2->1
    输出: true
    

    进阶:
    你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?

    一个最暴力的做法,遍历一次,内容保存在数组内,然后判断是否回文。

    遇到一个比较严重的问题需要记录一下,使用Vector类时,设定的类型为Integer,必须使用Equals函数来判断两数是否相等,使用==则不行。奇怪的是,只有部分判断是错误的。

    查阅百度,发现了问题所在:

    这种行为差异的原因是JVM维护Integer范围为-128到127 的对象的缓存(可以使用系统属性“java.lang.Integer.IntegerCache.high”

    或JVM来覆盖上限值参数“-XX:AutoBoxCacheMax = size”)。对于此范围内的值,Integer.valueOf()将返回缓存的值,而不是创建一个新的值。

    所以,虽然没有达到题目的进阶要求使用O(1)的空间复杂度完成问题,但还是学习到了新的知识点。

    代码如下:

     1 class Solution {
     2     public boolean isPalindrome(ListNode head) {
     3         Vector<Integer> vector=new Vector<>();
     4         if(head==null)
     5             return true;
     6         else
     7             vector.add(head.val);
     8         while(head.next!=null)
     9         {
    10             vector.add(head.next.val);
    11             head=head.next;
    12         }
    13         int left=0,right=vector.size()-1;
    14         while(left<=right)
    15         {
    16             System.out.println(vector.get(left)+"***"+vector.get(right));
    17             if(vector.get(left).equals(vector.get(right)))
    18             {
    19                 left++;
    20                 right--;
    21                 continue;
    22             }
    23             else 
    24                 return false;
    25         }
    26         return true;
    27     }
    28 }
  • 相关阅读:
    Vue.js —— 关闭eslint校验
    彻底搞懂 module.exports/exports/import/export/export default
    JS 中的原型和原型链
    TypeScript-初级-08-声明合并
    TypeScript-初级-07-泛型
    TypeScript-初级-06-类与接口
    TypeScript-初级-05-类
    TypeScript-初级-04-枚举
    TypeScript-初级-03-元组
    TypeScript-初级-02-字符串字面量类型
  • 原文地址:https://www.cnblogs.com/axiangcoding/p/10054725.html
Copyright © 2011-2022 走看看