
算法
弟炜啊
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
468 验证IP地址
class Solution {public: string validIPAddress(string IP) { if(is4(IP))return "IPv4"; else if(is6(IP))return "IPv6"; return "Neither"; } bool is4(string IP){ vector<string>ip; split(IP,ip,'.'); .原创 2021-09-15 18:19:05 · 101 阅读 · 0 评论 -
(leetcode518)1,2,5,10元零钱组合成n元方案数
动态规划用dp[x]表示组成x元有几种方案,目标是求dp[n]int change(int amount, vector<int>& coins) { vector<int> dp(amount + 1); dp[0] = 1; for (int& coin : coins) { for (int i = coin; i <= amount; i++) { .原创 2021-09-23 13:39:35 · 579 阅读 · 0 评论 -
剑指offer 43 1~n 整数中 1 出现的次数
问题描述输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数。例如,输入12,1~12这些整数中包含1 的数字有1、10、11和12,1一共出现了5次。解答代码class Solution {public: int countDigitOne(int n) { int digit = 1, res = 0; int high = n / 10, cur = n % 10, low = 0; while(原创 2021-09-14 17:37:07 · 68 阅读 · 0 评论 -
位运算实现a+b
异或可实现不进位加法的功能,a ^ b 就是 a,b 相加之后,该进位的地方不进位的结果。 a & b 就是 a 和 b 里都是 1 的位置, a & b << 1 就是进位。 a + b = (a ^ b) + (a & b << 1)int aplusb(int a,int b){ while(b) { int temp = a^b; b = (a&b) << 1;原创 2021-09-10 19:07:13 · 289 阅读 · 0 评论 -
[leetcode1171] 链表删去和为零的连续节点
ListNode* removeZeroSumSublists(ListNode* head){ ListNode* dummy = new ListNode(0); dummy->next = head; ListNode* cur = dummy; while(cur->next) { ListNode* q = cur->next; int sum = q->val; whil.原创 2021-09-10 18:36:42 · 83 阅读 · 0 评论 -
无序数组中位数
1. 排序对无序数组排序,然后可以直接得到该数组的中位数,时间复杂度为O(nlogn)。2. 利用快排思想寻找第K大的数(时间复杂度为O(n))先挑选一个数作为标准,以该元素为支点,将数组划分为两部分。这个问题可以抽象化为寻找第K大的数,快排每排完一轮之后左侧都是比他小的元素,右侧都是比他大的元素,那么支点的index(假设为N-1)即为第N大的数。当N == K,我们就找到了第K大的数;当N > K时, 第K大的数在[0,N-1]范围内;当N < K时,第K大的数在[N+1,n原创 2021-09-09 22:43:36 · 879 阅读 · 0 评论