自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(238)
  • 问答 (2)
  • 收藏
  • 关注

转载 片上网络概述

受限于实现成本及能耗开销等问题,目前单核处理器性能无法有太多的提升,因此设计多核和众核处理器成为了进一步提升处理器性能的关键。片上网络是一种用于连通片上核心的互联架构,相较于其他的互联架构,片上网络具有可扩展性强、通信效率高以及能耗较低等特点。因此片上网络具有广阔的未来发展前景。片上网络的设计空间包括网络的拓扑结构、路由节点的设计以及路由算法的设计等。首先,本文简要介绍了片上网络的相关内容。之后,本文针对目前片上网络的路由算法进行了分类整理。

2023-04-18 09:45:09 646

原创 leetcode 423. 从英文中重建数字

思路有些字母对于数字英文是唯一的,筛选第一遍后,有些字母对于数字英文是唯一的筛选第二遍后,有些字母对于数字英文是唯一的int cmp(const void* a,const void *b) { int c = *(int *)a; int d = *(int *)b; return c - d;}char * originalDigits(char * s){ int count[256] = {0}; int i; int res[15.

2021-11-25 21:45:46 451

原创 leetcode 剑指 Offer II 082. 含有重复元素集合的组合

思路上一个题的变体,还是属于回溯和DFS只不过不能重复,而且只能用一次,那就是选或者不选的时候了,但是如果候选名单里面有重复的,比如重复的有5个,那么选的方法就是从0-5选5次,选完就跳过该值,也就是begin不再+1,而是加5int cmp(const void* a ,const void *b) { int c = *(int*)a; int d = *(int*)b; return d - c;}void dfs(int* candidates, int t.

2021-11-25 21:16:12 656

原创 leetcode39. 组合总和

思路标准的回溯,DFS每个数字都可以无限次使用,每个数字都不重复,那么每次都使用当前数字的最大数量,然后依次减少,进行递归int cmp(const void* a ,const void *b) { int c = *(int*)a; int d = *(int*)b; return d - c;}void dfs(int* candidates, int target, int begin, int end, int *returnSize, int** ret.

2021-11-25 20:29:27 167

原创 leetcode 剑指 Offer II 035. 最小时间差

思路char换成int十进制换成时间的进制排序,找最小差值因为是个循环所以00:00 23:59差值为1,(a+m)%1440==b,用二分法找m,且一头一尾差值超过12小时,注意查找时,a不管怎样都大于b,所以(a+m)>1440必须成立,在此基础上才能减小m,否则一直死循环int strtoint(char *s){ int i; int l = strlen(s); int count = 0; int res = 0; for (i = .

2021-11-24 10:30:10 107

原创 leetcode594. 最长和谐子序列

思路标准的滑动窗口,只求数量,没有顺序,不求序列。那么就进行排序,自己写的很垃圾,左窗口和右窗口,维护一个最大值最小值更新,用于去掉全相等,不用看答案里面只用了左右指针,因为排序后,值都是挨在一起的,只用左右指针就可以,判断左右指针是否相等int cmp(const void *a, const void *b) { int c = *((int*)a); int d = *((int*)b); return c - d; }int findLHS(int* nums, i

2021-11-23 20:32:28 360

原创 leetcode859. 亲密字符串

思路只能交换2个,那么最多两个不一样,长度还必须相等,不一样的还不能是奇数即使是0,那也起码有两个相同的才能换,2的话,必须所有的字母组成一致才行bool buddyStrings(char * s, char * goal){ int len_s = strlen(s); int len_g = strlen(goal); int count = 0; int c_s[256] = {0}; int c_g[256] = {0}; int i;.

2021-11-23 09:28:55 305

原创 leetcode 384. 打乱数组

思路打乱数组,全排列,全排列是当前元素和依次其之前的元素进行交换,然后递归(当前元素变换),再换回来返回任何数组的概率相同,那么就是随机交换,当前元素(当前元素变换)和任意一个元素进行交换,只需要一个数组typedef struct { int *res; int *ress; int count;} Solution;Solution* solutionCreate(int* nums, int numsSize) { Solution *obj = (.

2021-11-22 21:17:49 769

原创 leetcode787. K 站中转内最便宜的航班

思路DFS 超时BFSDFSint min(int a, int b) { if (a > b) return b; else return a;}void dfs(int n,int (*flag)[n], int src, int dst, int k, int *result, int *cur){ int i; if(k < -1||*result<=(*cur)) return; .

2021-11-22 15:00:43 240

原创 leetcode 638 简单版

在 LeetCode 商店中, 有 n 件在售的物品。每件物品都有对应的价格。然而,也有一些大礼包,每个大礼包以优惠的价格捆绑销售一组物品。给你一个整数数组 price 表示物品价格,其中 price[i] 是第 i 件物品的价格。另有一个整数数组 needs 表示购物清单,其中 needs[i] 是需要购买第 i 件物品的数量。还有一个数组 special 表示大礼包,special[i] 的长度为 n + 1 ,其中 special[i][j] 表示第 i 个大礼包中内含第 j 件物品的数量,且 s

2021-11-22 14:29:28 112

原创 leetcode718. 最长重复子数组

思路:当不相等的时候,那么当前的最长公共子序列就断了,为0唯一来源就是相等的时候dp[i][j]={dp[i−1][j−1]+1dp[i]==dp[j]0dp[i] != dp[j]dp[i][j]=\begin{cases}dp[i-1][j-1]+1& \text{dp[i]==dp[j]}\\0& \text{dp[i] != dp[j]}\end{cases}dp[i][j]={dp[i−1][j−1]+10​dp[i]==dp[j]dp[i]&n.

2021-11-18 19:32:47 83

原创 leetcode563. 二叉树的坡度

思路:递归/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */int findTilt(struct TreeNode* root) { int count = 0; findTilt1(root,&count); ret.

2021-11-18 10:46:17 64

原创 leetcode239. 滑动窗口最大值

思路:官网单调栈解答本人简单粗暴超时版int* maxSlidingWindow(int* nums, int numsSize, int k, int* returnSize){ *returnSize = numsSize - k + 1; int *ans = (int *)malloc(sizeof(int) * *returnSize); int q[numsSize]; int l = 0, r = 0; for (int i = 0; i &.

2021-11-13 22:31:49 705

原创 10_23_1滑动窗口

给定字符串A和B,求A中包含所有B中字符的子串总数ABBCDD BCDABBCD ABBCDD BBCD BBCDD BCD BCDD这个地方有点误解,不知道B是否有重复看答案好像没有重复思路:自己的蠢方法,把子数组全部数一遍,铁定超时大佬的滑动窗口,只数一部分,然后滑动就行int isVaild(int *counts1, int *counts2){ int i; for(i = 65; i <= 90; i++) { if(counts1[i]

2021-11-13 19:53:32 964

原创 leetcode不知道多少题

一堆程序,有互斥的,只要不互斥就可以同时运行,互斥的只能单独运行。求最短的运行时间,时间=可以一起运行程序中的最大时间+n个单独运行程序时间思路01背包,搜就行了#include<stdio.h>#include<string.h>int min(int a, int b){ if(a<b) return a ; else return b;}int max(int a,int b){ if(a>b)

2021-10-03 18:29:52 54

原创 leetcode300. 最长递增子序列

思路动态规划dp[i]是以nums[i]为结束元素的递增子序列的长度,dp[i] = max(dp[i],dp[j]+1) when nums[i] > nums[j].最大值不是最后一个,是可能中间的某个元素结尾的序列int lengthOfLIS(int* nums, int numsSize){ int dp[numsSize] ; int i; int max = 1; for(i=0;i<numsSize;i++) { .

2021-09-22 09:45:02 66

原创 leetcode650. 只有两个键的键盘

思路质数只能一个一个复制黏贴,因为可以省事的次数全都是有除数的,有倍数关系的比如4,是2的倍数,可以由2复制黏贴一次得到,9是3的倍数,可以由3复制黏贴黏贴得到,最小的除数才是最省事的,这样可以使黏贴的次数最少,比如12,由6得到总比3以及4得到要快代码int isOK(int n){ int len=sqrt(n); int i; int flag = 0; for(i=2;i<=len;i++){ if(n%i==0){ .

2021-09-19 14:21:25 75

原创 leetcode735. 行星碰撞

特么的可信考试,明明题很简单,但是自己是个撒比,条件没考虑全思路栈代码/** * Note: The returned array must be malloced, assume caller calls free(). */int* asteroidCollision(int* arr, int arrLen, int* returnSize){ int *outBuf = (int*)malloc(sizeof(int)*arrLen); if (arrLe.

2021-09-18 21:40:13 80

原创 leetcode292. Nim 游戏

思路先手,而且是4的整数倍,必输每次你拿n个,对手拿4-n个,你必输代码n%4!=0;

2021-09-18 21:22:33 87

原创 leetcode36. 有效的数独

思路按照要求判断就行代码bool isValidSudoku(char** board, int boardSize, int* boardColSize){ int i,j; int flag=0; int f[10]; memset(f, 0, sizeof(int)*10); for(i=0;i<9;i++){ memset(f, 0, sizeof(int)*10); for(j=0;j<9;j++){.

2021-09-18 21:19:58 77

原创 leetcode505.迷宫2

思路这个题中,由于要找最近的距离,所以点是可以重复跑的,每次选最小距离,根据最小距离进行递归注意还是不撞墙不能停的代码void dfs(int** maze, int mazeSize, int mazeColSize, int startx, int starty, int endx, int endy,int k,int len[][100]){ if(startx<0||starty<0||startx>mazeSize||starty>mazeCol...

2021-09-16 23:23:07 196

原创 leetcode447. 回旋镖的数量

思路暴力,计算出全部点之间的距离匹配距离相同的点struct Node { int i; int j; double len;};int cmp(const void *a,const void *b){ struct Node c = *(struct Node*)a; struct Node d = *(struct Node*)b; return c.len-d.len;}int numberOfBoomerangs(int** po.

2021-09-15 21:43:24 70

原创 leetcode490. 迷宫

思路注意是撞到墙才停止滚动,四个方向上都能滚动可能会滚到重复的停止位置,如果停到重复的位置就是无法滚到终点,所以标记的是停止的位置,路径是可以交叉的,如图不能给停止的位置标记为1,如果滚动一次刚好在终点旁边,那么第二次就会在终点停止,但是这次是错误的代码bool dfs(int** maze, int mazeSize, int mazeColSize, int startx, int starty, int endx, int endy){ //判断停止位置 if(star..

2021-09-15 21:35:42 269

原创 leetcode162. 寻找峰值

代码int findPeakElement(int* nums, int numsSize){ int start = 0; int end = numsSize-1; int mind = 0; while(start<end){ mind = (start+end)/2; if(nums[mind]>nums[mind+1]) end = mind; else ..

2021-09-15 11:07:50 43

原创 leetcode524. 通过删除字母匹配到字典里最长单词

思路字符串匹配,暴力匹配就完事了注意匹配和不匹配的数字int cmp (const void *a,const void *b){ char *c = *(char**)a; char *d = *(char**)b; if(strlen(c) != strlen(d)) return strlen(d)-strlen(c); return strcmp(c,d);}char * findLongestWord(char * s, char .

2021-09-14 20:24:05 63

原创 leetcode600. 不含连续1的非负整数

思路暴力,每次后移一位与当前值&如果为0,则当前值符合条件dp[i][1] = dp[i-1][0],dp[i][0] = dp[i-1][1]+dp[i-1][0]得出第i位的值是0或者1时的有效数量。1[......]--->0[.....], 0[......]->0[.....]+1[.....]我们只把第i个有效位1换为0,这个1后面怎么放数字,都会比n小,res = dp[i-1][0]+d[i-1][1],如果有连续的1,那么就返回res代码int dp[.

2021-09-13 22:23:03 60

原创 leetcode68. 文本左右对齐

思路按照题目的意思来计算长度时,每一行的字符长度之和不能超过最大值,两个单词之间至少有一个空格,分为中间单词和最后一个单词。填充时,分为最后一排左对齐和非最后一排散列对齐其中非最后一排还分为一个单词和多个单词处理的过程,一个单词,直接填充就完事了最后一排的最后一个单词后面需要将多的位置用空格补齐代码#include<stdio.h>#include<string.h>#include<stdlib.h>char ** fullJustify(ch.

2021-09-12 21:02:04 117

原创 leetcode1894. 找到需要补充粉笔的学生编号

int chalkReplacer(int* chalk, int chalkSize, int k){ long all = 0,i; for(i=0;i<chalkSize;i++){ all = all + chalk[i]; } if(all==0||k==0) return 0; k = k%all; for(i=0;i<chalkSize;i++){ if(k>=0){ .

2021-09-12 12:07:20 72

原创 leetcode678. 有效的括号字符串

思路*可以当左括号也可以当右括号,还可以是空,也就是不影响括号数量那就当左括号来一次,当右括号来一次就OKbool checkValidString(char * s){ int len = strlen(s); int i=0; int left=0; int right=0; int star=0; for(i=0;i<len;i++){ if(s[i]=='('){ left++; .

2021-09-12 11:58:13 60

原创 leetcode502. IPO

思路将利润从大到小排,每次从头开始寻找资本可以覆盖的captical,但是这样很容易超时对寻找进行优化过程,(1)每次寻找的时候从第一个未标记的captical-profit项目开始(2)注意有可能找不到合适的投资项目,即使项目还有没标记的,数量资格还没用完,此时需要break#include<stdio.h>#include<math.h>#include<stdlib.h>struct Cu { int profit; int...

2021-09-11 23:37:47 73

原创 leetcode动态规划切钢筋

钢筋的价值和长度有关,以下为初始数据 v[0] = 0; v[1] = 1; v[2] = 5; v[3] = 8; v[4] = 9;//不是最大值,注意 v[5] = 10; v[6] = 20; v[7] = 20; v[8] = 20; v[9] = 20; v[10] = 20;思路动态规划,只管最后一刀切的位置需要将n之前的长度的价值最大值求取出来,进行累计#include<stdio.h

2021-09-10 11:58:47 182

原创 leetcode875. 爱吃香蕉的珂珂

思路二分查找,吃的最大速度是数组中的最大值,吃的最小速度是1,二分法查找符合条件的速度,每次更新最小值第一眼没看出来是二分查找,还需要练,这个就是暴力,只不过暴力的少了一点。从最小值到最大值的遍历int isOk(int* piles, int pilesSize, int v, int h){ int i = 0; int count = 0; for (i = 0; i < pilesSize; i++) { count = count + p.

2021-09-09 16:02:33 79

原创 leetcodeOffer 38. 字符串的排列

思路全排列得回溯剪枝,当之前相等的字符串已经交换过时,剪枝代码void swap(char *s,int i,int j){ char temp = s[i]; s[i] = s[j]; s[j] =temp;}// int cmp(const void *a,const void *b){// return (*(char*)a, *(char*)b);// }int cmp(const void *a,const void *b){ r.

2021-09-07 23:30:11 83

原创 leetcode剑指 Offer II 105. 岛屿的最大面积

思路广度优先遍历,跟岛屿的数量一致代码#include<stdio.h>#define max(a,b) ((a)>(b)?a:b)int max_area(int gridSize, int gridColSize,int **grid,int hang,int lie ){ if(hang<0||hang>=gridSize||lie<0||lie>=gridColSize){ printf("1\n"); .

2021-09-05 17:15:10 84

原创 leetcode470. 用 Rand7() 实现 Rand10()

思路如果是10做7的话,构成[0-7*n]大于7的舍弃就可以如果是7做10,还是要构成[0-10*n]大于10的倍数舍弃就可以公式rand_X(),rand_Y(),可以生成[1-x],[1-y]的随机数,(rand_X() - 1) × Y + rand_Y() ==> 可以等概率的生成[1, X * Y]范围的随机数,(rand7-1)*7+rand7===>[1-49]那么超出倍数范围的舍弃就可以了a\b12345670123456.

2021-09-05 09:59:52 71

原创 leetcode165. 比较版本号

思路注意1.0.0和1.0是一样的,踩坑了字符串分割比较就可以了#include<stdio.h>#include<string.h>#include<stdlib.h>#include<ctype.h>int compareVersion(char * version1, char * version2){ char *p = "."; char *re1 = NULL,*re2 = NULL; char *t1 .

2021-09-01 21:20:25 54

原创 leetcode1109. 航班预订统计

思路暴力前缀和暴力解int* corpFlightBookings(int** bookings, int bookingsSize, int* bookingsColSize, int n, int* returnSize){ int i,min_v = 65536,max_v=0; int *res = (int*)malloc(n*sizeof(int)); memset(res,0,sizeof(int)*n); int t=0; for(i=0.

2021-08-31 23:05:09 71

原创 leetcode528. 按权重随机选择

思路权重模拟typedef struct { int max; int count; int w[10001];} Solution;Solution* solutionCreate(int* w, int wSize) { Solution* t = (Solution*)malloc(sizeof(Solution)); t->max =0; t->count = wSize; int i; for(i=0.

2021-08-31 22:06:21 57

原创 剑指 Offer II 109. 开密码锁

struct Inter{ int start; int end;};int cmp(const void *a,const void *b){ struct Inter c = *(struct Inter*) a; struct Inter d = *(struct Inter*) b; return c.start - d.start;}#define max(a,b) ((a)>(b)?a:b)int** merge(int** inte.

2021-08-29 20:07:36 115

原创 leetcode56合并区间

思路转成结构体对结构体进行排序,以start为排序参数注意比较结尾处两个的大小#include<stdio.h>#include<stdlib.h> struct Inter{ int start; int end;};int cmp(const void *a,const void *b){ struct Inter c = *(struct Inter*) a; struct Inter d = *(struct Inter*.

2021-08-29 19:11:52 121 1

空空如也

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

TA关注的人

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