随笔分类 - 剑指Offer
摘要:# 【剑指Offer】55、链表中环的入口结点 **题目描述:** 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 **解题思路:** 本题是一个比较典型的链表题目,难度适中。首先,对于大多人来说,看到这道题是比较开心的,因为判断一个链表是否存在环的方法,基本上大家都知道
阅读全文
摘要:# 【剑指Offer】36、两个链表的第一个公共结点 **题目描述:** 输入两个链表,找出它们的第一个公共结点。 **解题思路:** 本题首先可以很直观的想到蛮力法,即对链表1(假设长度为m)的每一个结点,遍历链表2(假设长度为n),找有没有与其相同的结点,这显然复杂度为O(mn)。 进一步考虑,
阅读全文
摘要:# 【剑指Offer】25、复杂链表的复制 **题目描述:** 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)。 **解题思路:**
阅读全文
摘要:# 【剑指Offer】16、合并两个排序的链表 **题目描述:** 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 **解题思路:** 首先需要判断几个特殊情况,即判断输入的两个指针是否为空。如果第一个链表为空,则直接返回第二个链表;如果第二个链表为空,
阅读全文
摘要:# 【剑指Offer】14、链表中倒数第k个结点 **题目描述:** 输入一个链表,输出该链表中倒数第k个结点。为了符合习惯,从1开始计数,即链表的尾结点是倒数第1个节点。例如,一个链表有6个结点,从头结点开始,它们的值依次是1,2,3,4,5,6。则这个链表倒数第三个结点是值为4的结点。 **解题
阅读全文
摘要:# 【剑指Offer】3、从尾到头打印链表 **题目描述:** 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。 **解题思路:** (三种方法:借助栈、递归、列表的首位插入) 从头到尾打印链表比较简单,从尾到头很自然的可以想到先将链表进行反转,然后再打印。但是,通常我们不希望改变原
阅读全文
摘要:# 【剑指Offer】54、字符流中第一个不重复的字符 **题目描述:** 请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。 **输出描
阅读全文
摘要:# 【剑指Offer】53、表示数值的字符串 **题目描述:** 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100", "5e2", "-123"," 3.1416" 和 "-1E-16" 都表示数值。 但是 "12e", "1a3.14", "1.2.3", "+
阅读全文
摘要:# 【剑指Offer】52、正则表达式匹配 **题目描述:** 请实现一个函数用来匹配包括'`.`'和'`*`'的正则表达式。模式中的字符'`.`'表示任意一个字符,而'`*`'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式
阅读全文
摘要:# 【剑指Offer】49、把字符串转换成整数 **题目描述:** 将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。 **输入输出描述:
阅读全文
摘要:# 【剑指Offer】44、反转单词序列 **题目描述:** 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句
阅读全文
摘要:# 【剑指Offer】43、左旋转字符串 **题目描述:** 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即
阅读全文
摘要:# 【剑指Offer】34、第一个只出现一次的字符 **题目描述:** 在一个字符串(0 map = new HashMap(); for(int i=0;i<s.length();i++){ char c=s.charAt(i); map.put(c,map.getOrDefault(c,0)+1
阅读全文
摘要:# 【剑指Offer】27、字符串的排列 **题目描述:** 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 **输入描述:**输入一个字符串,长度不超过9(可能有字符重复
阅读全文
摘要:# 【剑指Offer】2、替换空格 **题目描述:** 请实现一个函数,将一个字符串中的**每个空格替换成“%20”**。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 **解题思路:** 对于这个题目,我们首先想到原来的一个空格替换为三个字符,
阅读全文
摘要:# 【剑指Offer】51、构建乘积数组 **题目描述:** 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1]。 其中B中的元素`B[i]=A[0] * A[1]... * A[i-1] * A[i+1]... * A[n-1]`。不能使用除法。 **解题思路:*
阅读全文
摘要:# 【剑指Offer】50、数组中重复的数字 **题目描述:** 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么
阅读全文
摘要:# 【剑指Offer】40、数组中只出现一次的数字 **题目描述:** 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度为O(n),空间复杂度为O(1)。 **解题思路:** 这道题目相对比较难,一般情况下,我们首先可以想到的是顺序扫描数组,
阅读全文
摘要:# 【剑指Offer】37、数字在排序数组中出现的次数 **题目描述:** 统计一个数字在排序数组中出现的次数。例如,输入排序数组{1,2,3,3,3,3,4,5}和数字3,由于数字3在该数组中出现了4次,所以函数返回4。 **解题思路:** 既然输入的数组是有序的,所以我们就能很自然的想到用二分查
阅读全文
摘要:# 【剑指Offer】35、数组中的逆序对 **题目描述:** 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007。 **输入描述:** 题目保证输
阅读全文

浙公网安备 33010602011771号