随笔分类 -  剑指offer

摘要:题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 //num1,num2分别为长度为1的数组。传出参数 //将num1[0],num2[0]设置为返回结果 public class Solution { public void FindNumsA 阅读全文
posted @ 2020-03-25 20:35 清心lh 阅读(168) 评论(0) 推荐(0)
摘要:题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快 阅读全文
posted @ 2020-03-25 20:33 清心lh 阅读(110) 评论(0) 推荐(0)
摘要:题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 输出描述: 对应每个测试案例,输出两个数,小的先输出。 class Solution { public: vector<int> FindNumbersWith 阅读全文
posted @ 2020-03-25 20:29 清心lh 阅读(112) 评论(0) 推荐(0)
摘要:题目描述 输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的) 思路:因为正常情况下,两个链表前面部分是不同的,后面部分是相同的,所以从后往前查看比较容易。因此需要借助栈。 将两个链表分别从表头开始装入栈中,全部装入完后。 阅读全文
posted @ 2020-02-24 21:28 清心lh 阅读(115) 评论(0) 推荐(0)
摘要:题目描述 统计一个数字在排序数组中出现的次数。 思路: 最简单的从头遍历 更优化的方案利用二分法。 我做的时候,一开始在while循环里面忘记mid=(begin+end)/2,导致运行时间超长进入死循环。粗心啊!!! class Solution { public: int GetNumberOf 阅读全文
posted @ 2020-02-24 21:24 清心lh 阅读(145) 评论(0) 推荐(0)
摘要:题目描述 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0 class Solution { public: double Power(double base, int exponent) { if 阅读全文
posted @ 2020-02-22 20:47 清心lh 阅读(105) 评论(0) 推荐(0)
摘要:题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 思路: 简单的一种做法:设置一个新的数组。 然后对原数组从头开始遍历,若是奇数,就复制到新数组中,遍历完一遍后;再遍历第 阅读全文
posted @ 2020-02-22 20:46 清心lh 阅读(170) 评论(0) 推荐(0)
摘要:题目描述 输入一个链表,输出该链表中倒数第k个结点。 思路:有2方法。 第一种:找到数组的长度i,让指针从头开始走i-k步即可 第二种:设置两个指针指向头结点,让一个先走k步,然后两者再同时前进,当先出发的那个到达结尾时,后出发的那个所指的就是倒数第k个结点 代码: /* struct ListNo 阅读全文
posted @ 2020-02-22 20:44 清心lh 阅读(101) 评论(0) 推荐(0)
摘要:题目描述 输入一个链表,反转链表后,输出新链表的表头。 思路:遍历链表,将数值存储到数组中。然后再将数组中的值反向复制到链表 代码: /* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next 阅读全文
posted @ 2020-02-22 20:43 清心lh 阅读(110) 评论(0) 推荐(0)
摘要:题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 思路: 代码: /* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = v 阅读全文
posted @ 2020-02-22 20:42 清心lh 阅读(155) 评论(0) 推荐(0)
摘要:题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 思路: 1.先判断root1的根节点和root2的根节点是否相同 2.若是不相同,则递归遍历root1的左右子树,直到找到一个节点与root2的根节点相同 3.若是相同,则依次遍历左右节点,查看ro 阅读全文
posted @ 2020-02-22 20:41 清心lh 阅读(148) 评论(0) 推荐(0)
摘要:题目描述 操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5思路:采用递归的思想从根节点开始,1若是左右子树都不为空,就将根节点的左指针指向右 阅读全文
posted @ 2020-02-22 20:35 清心lh 阅读(183) 评论(0) 推荐(0)
摘要:题目描述 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1 阅读全文
posted @ 2020-02-22 20:32 清心lh 阅读(109) 评论(0) 推荐(0)
摘要:题目描述 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 阅读全文
posted @ 2020-02-22 20:18 清心lh 阅读(100) 评论(0) 推荐(0)
摘要:题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 思路: 我一开始的思路是这样的,但是没能实现,考虑到具体实现步骤,难度太大。 1.先找首位的数最小的数作为第一个 阅读全文
posted @ 2020-02-22 20:15 清心lh 阅读(111) 评论(0) 推荐(0)
摘要:题目描述 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写). 思路: 1.先统计每个字母出现的次数,保存在arr数组中 2.找到只出现一次的字母,将其位置保存在place数组中 3.找到place数组 阅读全文
posted @ 2020-02-22 20:06 清心lh 阅读(138) 评论(0) 推荐(0)
摘要:题目描述 把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数 class Solution { public: int GetUglyNumber_Solution(in 阅读全文
posted @ 2020-02-22 15:27 清心lh 阅读(122) 评论(0) 推荐(0)
摘要:题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. import ja 阅读全文
posted @ 2020-02-21 21:05 清心lh 阅读(131) 评论(0) 推荐(0)
摘要:题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。 注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法。 import java.util.Stack; public class Solution { 阅读全文
posted @ 2020-02-21 21:04 清心lh 阅读(114) 评论(0) 推荐(0)
摘要:题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长 阅读全文
posted @ 2020-02-21 21:02 清心lh 阅读(99) 评论(0) 推荐(0)