- 博客(22)
- 收藏
- 关注
原创 C语言:缺失的第一个正数
这里先屏蔽两种情况 1.没有一的 显然没有一,第一个没出现的整数就是一 2.数组长度为n,正好从1排到n的情况,显然为n+1 剩下的就是普通情况了 由情况1,2屏蔽后我们可以处理数据。把小于0的数都变为1(情况一已经处理没有1的情况)把大于n的数全变为1(同理第二种情况)。哈希表判断数据是否出现过的原理就是看Q[a[i]]的值是否为正数,为正数a[i]就出现过。但是这里对空间复杂度要求是常数级。换...
2019-06-11 20:09:22
627
原创 C语言:组合总和
给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的数字可以无限制重复被选取。 说明: 所有数字(包括 target)都是正整数。 解集不能包含重复的组合。 示例 1: 输入: candidates = [2,3,6,7], target = 7, 所求解集为: [ [...
2019-06-11 16:03:34
1137
原创 C语言:下一个排列
实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。 如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。 必须原地修改,只允许使用额外常数空间。 以下是一些例子,输入位于左侧列,其相应输出位于右侧列。 1,2,3 → 1,3,2 3,2,1 → 1,2,3 1,1,5 → 1,5,1 从右向左遍历 若都为升序 那么根据题目它的下一个值就是逆置数...
2019-06-10 12:49:00
831
翻译 毕业设计底层
#include “imlib.h” typedef struct xylr { int16_t x, y, l, r, t_l, b_l; } xylr_t; static float sign(float x) { return x / fabsf(x); } static int sum_m_to_n(int m, int n) { return ((n * (n + 1)) - (m * ...
2019-05-27 14:27:36
229
原创 C语言:不用除号的两数除
代码很简介 思想很重要 a>>1相当于a/2; a<<3相当于a*8; for(i;i>=0;i–){//从2的15次方开始除,如果结果比除数小那么继续下去直到结果比除数大于等于仔细理解 比如 输入 100和3 一开始100除以2的15次方是一个很小的数 不断除二除二除二… 直到32 100/32=3 很明显余数4也是大于3的此时若直接输出32显然不对(输出...
2019-05-10 17:45:25
1269
原创 C语言:删除重复元素
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例 1: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。 示例 2: 给定 nums ...
2019-05-10 15:38:16
6999
原创 C语言:K个一组翻转链表
给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表。 k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么将最后剩余节点保持原有顺序。 示例 : 给定这个链表:1->2->3->4->5 当 k = 2 时,应当返回: 2->1->4->3->5 当 k = 3 时,应当返回: 3->2->1-&g...
2019-05-10 15:07:04
668
原创 C语言:括号生成
虽然题和上一篇类似但是调试过程还是遇到了一些问题,主要是自己的粗心 count不用+1传递,因为我赋值字符串的时候就是从0开始的 还有我测试的时候,测试输入2的输入时显示 (()) ()() 正常我思考为什么没有 ())(这种情况呢 其实看题不难理解 本文给的样例以及规定第一位为(就告诉了我们。头尾一定是(),根本原因就是我们的C语言由上至下按顺序执行if判断的结果造成了这个结果并不是算法错误,...
2019-05-10 13:25:51
1437
原创 C语言:电话号码字母排列
这点B玩意写了一下午加一晚上,但是理解了回溯法也值了。 具体解释我写在注释里 #include<stdio.h> char a[1000];//最后要输出的 int f=0;//全局变量当做指针 int a1[10]={0,1,2,3,4,5,6,7,8,9}; char s1[10][10]={"","",“abc”,“def”,“ghi”,“jkl”,“mno”,“pqrs”,“t...
2019-05-09 19:35:24
3388
原创 C语言:三数和
给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。 注意:答案中不可以包含重复的三元组。 例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4], 满足要求的三元组集合为: [ [-1, 0, 1], [-1, -1, 2] ] 本题网上有很多思路,我采用一次快排+对...
2019-05-09 11:09:32
645
原创 C语言:罗马数字转整数
和整数转罗马数差不多注意判定条件即可,从右向左,如果它的下一位的值比它大的话证明是 IV IX这类特殊值 把加变成减 #include<stdio.h> #include<string.h> void main(){ int a[8]={1000,500,100,50,10,5,1}; char c[8]={‘M’,‘D’,‘C’,‘L’,‘X’,‘V’,‘I’}; int...
2019-05-08 18:58:33
786
原创 C语言:整数转罗马数字
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并列的 1。12...
2019-05-08 18:15:20
2971
1
原创 C语言:盛水容器
https://leetcode-cn.com/problems/container-with-most-water/solution/sheng-zui-duo-shui-de-rong-qi-by-leetcode/ 具体题目和例子在链接当中 这个双指针方法实际上就是贪心算法,唯一要注意的就是如何移动指针,题目中给出容器实际上就是“长乘宽”,木桶装水的多少是由最短的一块木板决定的。同样根据贪心...
2019-05-08 16:55:32
632
原创 C语言:atio
#include<stdio.h> void main(){ char s[10]; scanf("%s",&s); int i,f,sum=0; for(i=0;i<10;i++){ f=s[i]-‘0’; if(s[i]==’-’){ printf("%c",s[i]); } if(f>=0&&f<=9){ sum=sum*10+f; } ...
2019-05-08 12:46:01
527
原创 C语言:Z字变换
将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下: L C I R E T O E S I I G E D H N 之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。 请你实现这个将字符串进行指...
2019-05-08 12:35:38
2081
原创 C语言:最长回文字符串
马拉车算法现在仅仅是看懂,以后会回来填坑。 动态规划的本质就是求表 但是递推式很难求 这里设置一个二维数组jud[10][10] 有jud[i][j] jud[1][8]的意义是判断位置1的字符到位置8的字符形成的字符串是否为回文字符串 所以必有i<j,因此在二维数组中i>j的部分全部设置为0。(true为1,false为0) 判断是否为回文字符串的递推式: s[i]==s[j],ju...
2019-05-08 10:11:06
1481
原创 C语言:求两个有序数组的中位数
写在前面 本题值得回看 受https://blog.youkuaiyun.com/hk2291976/article/details/51107778启发 尤其是链接中的 割 的思想 求中位数最大的问题是数组个数的奇数偶数问题 length/2 +1(length为奇数) mid={ length/2+1的值+length/2的值 除以2 (length为偶数) 割的思想: 例子 有数组 1,2,3,4 ...
2019-05-07 15:27:21
2075
4
原创 C语言动态规划0-1背包问题
#include<stdio.h> int main(){ int v[5]={0,3,4,5,6}; int w[5]={0,2,3,4,5}; int j=8; int i=0; int i1=0; int tab[5][9]; for(i=0;i<5;i++){ tab[i][0]=0; } for(i1=0;i1<9;i1++){ tab[0][i1]=0; } f...
2019-05-06 11:20:07
575
原创 C语言:无重复字符最长子串
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示例 2: 输入: “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。 示例 3: 输入: “pwwkew” 输出: 3 解释: 因为无重复字符的最长子串是 “wke”,所...
2019-05-06 11:10:10
3229
原创 C语言:给出两个 非空 的链表用来表示两个非负的整数
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> ...
2019-05-06 10:02:53
2996
原创 C语言:LeetCode第一题 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] #include<...
2019-05-06 09:09:32
8873
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人