判断一个链表是否为回文结构

判断一个链表是否为回文结构

【题目】给定一个链表的头节点head,请判断该链表是否为回文结构。【解答】从左至右遍历链表,遍历的过程中把每个节点依次压入栈中。因为栈是先进后出的,所以在遍历完成后,再次出栈时的顺序是和压入的顺序相反的。但是,如果改链表是回文结构,则进站顺序和出栈顺序一致。【代码实现】方法1public boolean is(Node head) { int length = 0; ...

算法 2019-09-25 PM 77次 0条
用两种方法找出无序列表中出现次数最多的元素

用两种方法找出无序列表中出现次数最多的元素

【题目】求无序数组中出现次数最多的元素,若两个元素出现次数一样,则取值比较大的元素。【思路】思路1:记录元素出现的次数,循环不断更新最大次数和对应的值,最后保存的就是出现次数最多的元素。思路2:无序列表中的元素和其出现次数作为键值对存放在HashMap中,最后遍历HashMap,找出出现次数最多的元素。【代码实现】方法1public void findMax(int[] nums) { ...

算法 2019-09-23 PM 93次 0条
打印两个有序链表的公共部分

打印两个有序链表的公共部分

【题目】给定两个有序链表的头指针head1和head2,打印两个链表的公共部分。【解答】因为是有序链表,所以从两个链表的头开始进行如下判断:如果head1的值小于head2的值,则head1往下移动。如果head2的值小于head1的值,则head2往下移动。如果head1的值和head2的值相等,则打印这个值,然后head1和head2都往下移动。head1或head2有任何一个移动到nu...

算法 2019-09-23 PM 96次 0条
用一个栈实现另一个栈的排序

用一个栈实现另一个栈的排序

【题目】一个栈中元素的类型为整型,现在想将该栈从栈顶到栈底按从大到小的顺序排序,只允许申请一个栈,除此之外可以申请新的变量,但不能申请额外的数据结构。如何完成排序?【解答】将要排序的栈记为stack,申请的辅助栈记为help。在stack上执行pop操作,弹出的元素记为cur。如果cur小于或等于help的栈顶元素,就将cur直接压入help。如果cur大于help栈顶元素,就将help的元...

算法 2019-09-23 PM 77次 0条
合并两个有序链表

合并两个有序链表

某乎的面试题。原题链接/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public L...

算法 2019-09-16 PM 51次 0条