代码编织梦想

至多修改一个字符,使得for循环内部执行 20 次_for二十次分组-爱代码爱编程

至多修改一个字符,使得for循环内部执行 20 次。 int n = 20; for (int i = 0; i < n; i--) { cout << "-"; // 要求这里的打印执行20次 }

一道笔试题 : 关于虚函数及动多态_多态笔试题-爱代码爱编程

#include <iostream> using namespace std; class A { public: void virtual f() { cout << "A" <<

斐波那契数、第 n 个泰波那契数_泰波那契数和斐波那契-爱代码爱编程

练习地址:https://leetcode-cn.com/study-plan/dynamic-programming/?progress=epvp9ls 文章目录 一、斐波那契数二、第 N 个泰波那契数

【数据结构】 Trie | 字典树 前缀树-爱代码爱编程

数据结构可视化:https://www.cs.usfca.edu/~galles/visualization/Trie.html 字典树结构,每个结点有两个成员。 struct TrieNode { bool isWorldEnd; // 标记当前字母是否为单词的结尾 TrieNode* children[26]; // 使用26个位置标记字

Nim 游戏 | 归纳推理法:轮流抓取石头,当n不为4的倍数使,我们总有办法赢得比赛-爱代码爱编程

https://leetcode-cn.com/problems/nim-game/ 题目:你和你的朋友,两个人一起玩 Nim 游戏: 桌子上有一堆石头。 你们轮流进行自己的回合,你作为先手。 每一回合,轮到的人拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。 假设你们每一步都是最优解。请编写一个函数,来判断你是否可以在给定石头数量为 n 的

链表操作题:链表逆置、K 个一组翻转链表-爱代码爱编程

链表结构: struct ListNode { int val; ListNode* next; ListNode(int x = 0) : val(x), next(NULL) {} }; 文章目录 1.单链表的逆置, 注意是不带头节点的单链表。思路一:辅助链表逆置思路二:原地逆置2.k个一组反转链表递归和非递归实现思路一:非递归分组

算法 | 多种解题思路-爱代码爱编程

IP地址转换 十进制数字形式的IP地址转换为点分十进制IP地址 123456789 ====> xx.xx.xx.xx 解题思路 1 转为HEX(16进制),每两位一字节,IPv4地址用点均分4字节 2 用char* 的指针指向 int 类型整数,每次读取一个字节,读四次 3 用联合体+结构体的形式,一个整型与4个char型共占一片空间,直接得到

线性时间选择——寻找第k小的数-爱代码爱编程

以下引用自:《算法设计与分析java版》 2.9 线性时间选择   本节讨论与排序问题类似的元素选择问题。元素选择问题的一般提法是:给定线性序集中n个元素和一个整数k,1≤k≤n,要求找出这n个元素中第k小的元素,即如果将这n个元素依其线性序排列时,排在第k个的元素即为要找的元素。当k=1时,就是要找最小元素;当k=n时,就是要找最大元素;当k=(

快速排序-爱代码爱编程

struct index { int left; // 排序开始位置 int right; // 结束位置 index(int l, int r) :left(l), right(r) {} }; template<typename _T> // 一次快排 int oneQuickSort(_T* arr, int left

归并排序-爱代码爱编程

template<typename _T> void copy(_T* dst, _T* src, size_t size) { int i = 0, j = 0; while (size--) dst[i++] = src[j++]; } template<typename _T> void Merge(_T* arr, i

单例模式应用 | Shared_ptr引用计数管理器-爱代码爱编程

在我们模拟设计 shared_ptr 智能指针时发现,不同类型的 Shared_ptr 不能使用同一个引用计数管理器,这显然会造成内存上的浪费。因此我们考虑将其设计为单例模式使其所有的 Shared_ptr指针 共享一个引用管理计数器 rm。具体实现如下: ps:在Node arr[10];语句 设计引用计数管理器的容量时可以考虑采用自动增长类型,如 ST

排序 | 冒泡排序的优化与qsort快速排序-爱代码爱编程

冒泡排序 冒泡排序 Bubble_Sort,是极为简单的一种排序算法。虽然效率差一点,但好在具有结构简单,容易理解,易于操作等优点。冒泡排序就是把小的元素往前调或者把大的元素往后调。在相邻的两个元素间比较,交换也发生在这两个元素之间。 冒泡排序是一种稳定排序算法,在排序后相同元素的前后顺序并没有改变。 相比于传统的冒泡排序,平均时间复杂度为O(n2)

C语言 | 栈区空间初探-爱代码爱编程

栈的定义 栈(stack)又名堆栈,堆栈是一个特定的存储区或寄存器,它的一端是固定的,另一端是浮动的 。对这个存储区存入的数据,是一种特殊的数据结构。所有的数据存入或取出,只能在浮动的一端(称栈顶)进行,严格按照“先进后出”的原则存取,位于其中间的元素,必须在其栈上部(后进栈者)诸元素逐个移出后才能取出。在内存储器(随机存储器)中开辟一个区域作为堆栈,叫

C语言 | 栈的应用 | 非递归栈实现快排-爱代码爱编程

/* 非递归栈实现快排 */ #include <stdio.h> #include <math.h>> #include <malloc.h> #include <windows.h> typedef struct _Stack { int *data; int top; }Stack; /*

逆波兰算法(后缀表达式)-爱代码爱编程

逆波兰式 即我们平时所说的后缀表达式(将运算符写在操作数之后) 实现逆波兰式的算法,难度并不大,但为什么要将看似简单的中序表达式转换为复杂的逆波兰式?原因就在于这个简单是相对人类的思维结构来说的,对计算机而言中序表达式是非常复杂的结构。相对的,逆波兰式在计算机看来却是比较简单易懂的结构。因为计算机普遍采用的内存结构是栈式结构,它执行先进后出的顺序

hanoi(汉诺塔)递归实现-爱代码爱编程

汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱

算法 | 串匹配算法之kmp算法及其优化-爱代码爱编程

主串 s:A B D A B C A B C 子串 t:  A B C A B 问题:在主串 s 中是否存在一段 t 的子串呢? 形如上述问题,就是串匹配类问题。【串匹配——百度百科】 串匹配问题是一项有着非常

打印图形输出三角形 *-爱代码爱编程

题目要求: 输入数字打印三角形排列的*图案实现可以多组输入实现输出菱形图案 如图: 写在前面:题目要求输出 * 三角形图案,一般题目如果不做特殊要求直接用打印函数输出题设要求即可。 分析:n为用户输入 第一行:n-1个空格      1个* 第二行:n-2个空格      3个*(2×2-1) . . 第n行:n-n个空格     

求素数(厄拉多塞筛法、暴力枚举法)-爱代码爱编程

筛选法: 首先:找出第一个素数,把他的倍数赋值为0 其次:找出其后第一个不为0的数,该数为素数,把他的倍数赋值为0 最后:重复上述步骤.... 筛选法也叫厄拉多塞筛法,因为素数的倍数必然不是素数,所以把素数的倍数全置为0,用一个新的数组保存那些不为0 的数,即为素数 #include <stdio.h> #include

单链表(原地)逆置_我叫rt的博客-爱代码爱编程_单链表的逆置

单链表实现逆置 从头遍历链表,使每一个结点都指向该结点的上一个节点。最后再处理头结点与为结点即可。 三个指针 对于一个单链表来说,我们不可能从一个结点(Node *i )找到它的上一个节点,所以我们需要额外定义一个指针(Node *s )指向该结点的上一个结点。此外在改变当前结点next指针的指向时会断开与下一结点的连接,所以我们还需要一个指针(No