09 2019 档案
摘要:题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 解题思路 题目中要求奇数和奇数,偶数和偶数之间的相对位置不变,就不能使用类似于快速排序的头尾双指针向中间靠拢的方式来计算
阅读全文
摘要:题目描述 输入一个链表,输出该链表中倒数第k个结点。 解题思路 使用快慢指针法,让快指针先走k步,然后再让慢指针开始走,当快指针到达链表尾部时,慢指针刚好到达倒数第k个节点。 C++代码实现: /* struct ListNode { int val; struct ListNode *next;
阅读全文
摘要:题目描述 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 保证base和exponent不同时为0 问题分析 计算一个浮点数的整数次方,主要考察的是对输入数据的完整性的预估能力。针对此问题,输入数据可能存在以下情况: 1.底数不为0,指
阅读全文
摘要:题目描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 解法一:设置标志为flag=1,逐个位移至不同位置,比较是否为1. C++实现 class Solution { public: int NumberOf1(int n) { unsigned int flag=1; int
阅读全文
摘要:题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 解法:使用数学归纳法可得,跳n级台阶的跳法一共有f(n)=2n-1中,即本问题要求求解2的n次方,使用位左移运算实现 C++实现代码: class Solution { publ
阅读全文
摘要:题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 问题分析 我们将跳法个数y与台阶数n视为一个函数关系,即y=f(n)。首先从第一级开始,当n=1时,只有一种跳法,即f(1)=1。当有两级台阶时,有两种跳法,跳两个一阶,
阅读全文
摘要:题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 C++实现: c
阅读全文
摘要:singleton模式属于创建型设计模式。其作用是在程序设计中,对于某一个类而言,全局只能存在一个实例对象。 下面以C++为例,对单例模式进行说明: 1. 最基本单例模式(单线程) 存在问题:在单线程下,只有instance == null 时,才会创建新对象,其余时间返回。但是对于多线程访问时,当
阅读全文
摘要:工厂模式是创建型模型的一种,主要优势在于程序的解耦性和高扩展性。在工厂模式中有三类角色。 比如对于一个电脑而言,usb口要识别外部设备,需要对当前插入设备的信息进行判断,那么定义抽象产品角色的抽象接口Usb,其中包含抽象方法showType();而对于每个具体产品对象(鼠标、键盘、打印机)实现抽象接
阅读全文
摘要:前言 在C++程序中,内存分为三种静态内存、栈内存、堆内存。其中静态内存和栈内存由系统进行维护,而堆内存则是由程序员自己进行维护,也就是我们在new和delete对象时,这些对象存放的区域。任何有C++开发经验的人都知道,在程序中 new 和 delete 必须成对使用,当我们动态申请的对象不再使用
阅读全文
摘要:Leetcode链接 : https://leetcode cn.com/problems/gray code/ 问题描述: 格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。格雷编码序列必须以 0 开头。 格雷码特
阅读全文

浙公网安备 33010602011771号