自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 收藏
  • 关注

原创 C++虚函数的底层实现原理详解

虚函数的底层实现原理详解C/C++杂记:虚函数的底层实现原理虚函数的实现的基本原理深入虚表结构运行时类型识别(RTTI)与动态类型转换原理C/C++杂记:虚函数的底层实现原理虚函数的实现的基本原理1. 概述简单地说,每一个含有虚函数(无论是其本身的,还是继承而来的)的类都至少有一个与之对应的虚函数表,其中存放着该类所有的虚函数对应的函数指针。例:其中:B的虚函数表中存放着B::foo和B::bar两个函数指针。D的虚函数表中存放的既有继承自B的虚函数B::foo,又有重写(override)

2021-09-09 12:05:58 4174 1

原创 子数组的最大累加和问题

描述给定一个数组arr,返回子数组的最大累加和例如,arr = [1, -2, 3, 5, -2, 6, -1],所有子数组中,[3, 5, -2, 6]可以累加出最大的和12,所以返回12.题目保证没有全为负数的数据[要求]时间复杂度为O(n)O(n),空间复杂度为O(1)O(1)示例1输入:[1, -2, 3, 5, -2, 6, -1]返回值:12备注:1≤N≤10 5题意分析理解什么是子数组?要求子数组最大累加和注意题目对时间复杂度和空间复杂度的要求时间:O(N)

2021-09-03 11:11:49 320

转载 两个有序数组(未必等长)找第k个数的问题(转)

两个有序数组(未必等长)找第k个数的问题。归并比较的方法固然可以完成,但是面试官总是期望O(logN)的解决方案。我参考了网上的所有方法都发现有特殊案例无法通过的情况,主要问题集中在边界情况上,比如一个数组只有一个或两个元素时,或者一个数组的长度不足k/2,总之很麻烦。现在我给出一个比较完美和简单的解决方案,希望大家指正,如果可以的话希望广大人民群众不要再被这道题折磨了。废话少说,进入正题吧,我的方法是基于中位数的比较。为什么使用中位数而不是在两个数组中各取k/2大的数呢,是因为只要数组的长度不为0,那么

2021-08-30 17:27:43 462

原创 C++实现前缀树

文章目录前缀树1 什么是Trie树2 树的构建与查询3 Trie树的应用4 C++实现Trie树,以及解决一些字符串问题前缀树1 什么是Trie树  Trie树,即前缀树,又称单词查找树,字典树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。Trie树的核心思想是空间换时间,利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。 它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。

2021-08-24 15:19:41 362

原创 设计一个LRU(最近最少使用)缓存结构

描述设计LRU(最近最少使用)缓存结构,该结构在构造时确定大小,假设大小为K,并有如下两个功能set(key, value):将记录(key, value)插入该结构get(key):返回key对应的value值提示:1.某个key的set或get操作一旦发生,认为这个key的记录成了最常使用的,然后都会刷新缓存。2.当缓存的大小超过K时,移除最不经常使用的记录。3.输入一个二维数组与K,二维数组每一维有2个或者3个数字,第1个数字为opt,第2,3个数字为key,value若opt=1

2021-08-20 23:43:03 561

原创 判断给定的链表中是否有环,如果有环则返回true,否则返回false

描述判断给定的链表中是否有环。如果有环则返回true,否则返回false。你能给出空间复杂度的解法么?输入分为2部分,第一部分为链表,第二部分代表是否有环,然后回组成head头结点传入到函数里面。-1代表无环,其他的数字代表有环,这些参数解释仅仅是为了方便读者自测调试示例1输入:{3,2,0,-4},1返回值:true说明:第一部分{3,2,0,-4}代表一个链表,第二部分的1表示,-4到位置1,即-4->2存在一个链接,组成传入的head为一个带环的链表 ,返回true示例

2021-08-20 23:34:50 655

原创 给定一个无序数组和一个目标值,找出数组中两个数之和等于目标值的所有组合

题目:给定一个无序数组和一个目标值,找出数组中两个数之和等于目标值的所有组合,并给出时间复杂度。假设数组是[3,5,3,5],目标值是8。答案是否可重复,题里没说,所以分3种情况,如下:1.重复。答案是【0,1】【0,3】【1,2】【2,3】,序号组合,共4种组合。解法如下:1.1.嵌套遍历。时间复杂度:O(n^2)。1.2.哈希法。键存数组元素值,值存出现次数。时间复杂度:O(n)。1.3.排序+双指针夹逼。时间复杂度:O(nlogn)。2.半重复。答案是【0,1】【2,3】,也可能是【

2021-08-20 20:28:44 1735

原创 假设我们有不同面值(1,3,5)的硬币若干枚,怎样用最少的硬币数凑够11元

问题描写叙述:假设我们有不同面值(1,3,5)的硬币若干枚,怎样用最少的硬币数凑够11元?思路问题动态规划算法的核心是:每一个子问题的状态和状态的转移方程。状态是:dp[i] ,即凑够i元最少须要的硬币的个数转移方程是:dp[i] = min(dp[i-C1]+1,dp[i-C2]+1,dp[i-C3]+1,……,dp[i-Cj]+1])即。每一个状态的值都是最小的那个。编写代码说明:通过递归函数dp_fun实现了对状态数组dp的初始化#include<iostream>u

2021-08-20 20:18:57 588

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除