牛客题解-NC141判断回文
题目
给定一个字符串,请编写一个函数判断该字符串是否回文。如果回文请返回true,否则返回false。
示例1
输入:
1 | "absba" |
输出:
1 | true |
示例2
输入:
1 | "ranko" |
给定一个字符串,请编写一个函数判断该字符串是否回文。如果回文请返回true,否则返回false。
输入:
1 | "absba" |
输出:
1 | true |
输入:
1 | "ranko" |
删除给出链表中的重复元素(链表中元素从小到大有序),使链表中的所有元素都只出现一次 例如: 给出的链表为1→1→2,返回1 →2. 给出的链表为1 →1→2→3→3,返回1 →2→3.
输入:
1 | {1,1,2} |
输出:
1 | {1,2} |
用一个指针就可以实现,对指针当前位置和下一位置的值进行比较。
给定一个m x n大小的矩阵(m行,n列),按螺旋的顺序返回矩阵中的所有元素。
输入:
1 | [[1,2,3],[4,5,6],[7,8,9]] |
输出:
1 | [1,2,3,6,9,8,7,4,5] |
对于一个给定的链表,返回环的入口节点,如果没有环,返回null
拓展:
你能给出不利用额外空间的解法么?
利用快慢指针确定链表是否存在环。
是:此时的slow指针和fast指针相遇且均在环内。此时将另一个指针slow2指向链表头结点,并让slow2和slow指针同时一次移动一步。由于slow指针在环内,所以两节点一旦相遇。一定是在环的入口节点处。
否:返回null。
给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历) 例如: 给定的二叉树是{3,9,20,#,#,15,7},
该二叉树层序遍历的结果是 [ [3], [9,20], [15,7]]
输入:
1 | {1,2} |
输出:
1 | [[1],[2]] |
对于一个字符串,请设计一个高效算法,计算其中最长回文子串的长度。
给定字符串A以及它的长度n,请返回最长回文子串的长度。
输入:
1 | "abc1234321ab",12 |
输出:
1 | 7 |
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。
输入:
1 | [1,2,3,2,2,2,5,4,2] |
输出:
1 | 2 |
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 思路:用一般的排序也可以完成这道题目,但是如果那样完成的话就可能太简单了。 用preValue记录上一次访问的值,count表明当前值出现的次数,如果下一个值和当前值相同那么count++;如果不同count--,减到0的时候就要更换新的preValue值了,因为如果存在超过数组长度一半的值,那么最后preValue一定会是该值。
以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。
(字符串长度不大于100000,保证字符串仅由'0'~'9'这10种字符组成)
输入:
1 | "1","99" |
输出:
1 | "100" |
Tips:
1 | 1+99=100 |
实现一个特殊功能的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作。
输入:
1 | [[1,3],[1,2],[1,1],[3],[2],[3]] |
输出:
1 | [1,2] |
Tips:
1 | 有三种操作种类,op1表示push,op2表示pop,op3表示getMin。你需要返回和op3出现次数一样多的数组,表示每次getMin的答案 |