随笔分类 -  力扣

浅浅记录一下吧
汉诺塔问题
摘要:#include <iostream> void hanoi(int n, char source, char target, char auxiliary) { if (n > 0) { // 将 n-1 个盘子从 source 移动到 auxiliary,使用 target 作为辅助 hanoi 阅读全文

posted @ 2024-04-27 14:49 不是小朋友L 阅读(54) 评论(0) 推荐(0)

二的幂次方判断——使用位运算-来源于lowbit操作
摘要:解法:位运算的使用 这里需要就是了解位运算的使用了 lowbit函数 x & -x 这种算法其实是利用了计算机的补码性质。计算机为了表示负数,将对应的正数二进制全部取反再加一。 lowbit是为了获取一个数的二进制中最低位的1对应的值,比如lowbit(10(10)) = 10(2),因为10的二进 阅读全文

posted @ 2024-04-27 14:04 不是小朋友L 阅读(48) 评论(0) 推荐(0)

快速幂的思想和code实现
摘要:解法:浮点数快速幂的应用 快速幂的思想就是倍增的思想 5的20次方 如果是一次一次乘需要5*5*5*5*5*5……… 20次乘法 快速幂就是 20(10)=00010100(2) 20=4+16 所以原来的就变成了: (a)(*)(a)a2 (a*a) (*) (a*a) a4 ((a*a)*(a* 阅读全文

posted @ 2024-04-27 13:44 不是小朋友L 阅读(21) 评论(0) 推荐(0)

存在重复元素
摘要:解法一:使用老师上课说的排序,然后遍历。使用快速排序时间复杂度是O(nlogn)(这个是快排的时间复杂度)+O(n)(遍历的时间复杂度) O(nlogn) #include <bits/stdc++.h> using namespace std; bool containsDuplicate(vec 阅读全文

posted @ 2024-04-27 13:14 不是小朋友L 阅读(33) 评论(0) 推荐(0)

字符串置换
摘要:3.1 LintCode211-字符串置换 bool Permutation(string &A, string &B){ 解法一:单纯使用数组计数,缺点是对如果带有特殊符号的字符串是无法处理的 时间复杂度是O(n) #include <iostream> using namespace std; 阅读全文

posted @ 2024-04-27 12:19 不是小朋友L 阅读(38) 评论(0) 推荐(0)

移除List的统一逻辑写法 LeetCode 203
摘要:原理:通过创建一个新的结点,放在头结点的前面,作为真正头结点的前驱结点,这样头结点就成为了意义上的非头结点,这样就可以统一操作结点的删除操作。 需要注意的是:这个新的结点是虚拟头结点,真的的头结点依然是它的后继结点,所以在C++中,我们依然需要手动删除这个虚拟头结点,返回的结点是它后面的那个结点。 阅读全文

posted @ 2022-10-15 14:27 不是小朋友L 阅读(24) 评论(0) 推荐(0)

移除链表元素
摘要:举个例子,链表里有元素,我们想要移除的元素值为1如下: 个人认为的主要思想就是:先记录后删除 1->5->2->5->8->1->0 NULL 0->5->2->5->8->1->0 对于头结点我们有三种情况 头结点为元素1 头结点元素为空null 头节点为其他元素,不为我们要删除的元素1 对于情况 阅读全文

posted @ 2022-10-15 14:08 不是小朋友L 阅读(39) 评论(0) 推荐(0)

质数筛法
摘要:埃式筛 原理:如果 x是质数,那么x的倍数 2x,3x… nx一定不是质数 输入一个数n,就可以知道1-n中有多少个质数: int n; int ret = 0; cin>>n; int* prime = new int[n]; memset(prime, 1, sizeof(prime)); pr 阅读全文

posted @ 2022-10-08 21:46 不是小朋友L 阅读(37) 评论(0) 推荐(0)

有效字母异位词
摘要:题目: 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。 示例 1: 输入: s = "anagram", t = "nagaram" 输出: true 示例 2: 输入: s = 阅读全文

posted @ 2022-09-30 10:27 不是小朋友L 阅读(47) 评论(0) 推荐(0)

导航