C语言
文章平均质量分 58
qq_38959715
这个作者很懒,什么都没留下…
展开
-
C语言/跳跃游戏(Jump Game)
先看要求题意理解:如题意所示,但注意 “可以跳跃的最大长度”指的是可跳跃范围!解题思路:做法有多种,最简单的利用多重嵌套if-else if-else或多重循环嵌套(for、while等)这里就不演示了。 通过贪心法来解决这道题,每次到达一个位置之后,我们都有一个可以选择的跳转范围,如果在这个范围里,我们可以选出最优跳跃路径(即最远可以达到哪个位置),就可以直接抛弃其...原创 2018-05-08 22:43:20 · 6427 阅读 · 1 评论 -
C语言/283.(移动零) Move Zeroes
先上题目 思路1.读取数组过程,计算数组中"0"的个数2.读取数组过程,设置标签index记录非"0"元素下标3.读取数组过程,按标签存入元素,最后在末尾补"0"代码部分void moveZeroes(int* nums, int numsSize) { int i,count=0,index=0; for(i=0;i<numsSize;i++){ if(nu...原创 2018-07-08 00:10:31 · 420 阅读 · 0 评论 -
C语言、Java/561.(数组拆分I) Array Partition I
先上题目思路:1.将数组排序2.将2n的数组分为n组3.计算最大和代码部分(C语言 )int cmp(const void *a,const void *b){ return *(int *)a-*(int *)b;}int arrayPairSum(int* nums, int numsSize) { int i,j,temp,len,result=0; ...原创 2018-07-06 21:28:34 · 515 阅读 · 0 评论 -
C语言/557.(反转字符串中的单词III) Reverse Words in a String III
先上题目思路:循环读取数组,判断是否读到空格符号(注意:当为最后一个单词时会读取到‘\0’),设置两个标签分别标记每个单词的头部和尾部。头尾标签同逐个向中间移动交换字符。代码部分char* reverseWords(char* s) { int i,left,right,len; char temp; left=0; len=strlen(s); for(i...原创 2018-07-04 23:36:03 · 744 阅读 · 0 评论 -
C语言/860.(柠檬水找零)Lemonade Change
先上题目在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。注意,一开始你手头没有任何零钱。如果你能给每位顾客正确找零,返回 true ,否则返回 false 。示例:思路:题目很长,希望大家能...原创 2018-07-04 21:43:48 · 1370 阅读 · 0 评论 -
C语言、Java/867.(回文素数) Prime Palindrome
先上问题求出大于或等于 N 的最小回文素数。回顾一下,如果一个数大于 1,且其因数只有 1 和它自身,那么这个数是素数。例如,2,3,5,7,11 以及 13 是素数。回顾一下,如果一个数从左往右读与从右往左读是一样的,那么这个数是回文数。例如,12321 是回文数。代码部分一(实现但耗费时间过长,时间超出)class Solution { public int primePalindro...原创 2018-07-08 22:55:34 · 972 阅读 · 0 评论 -
C语言/344.(反转字符串) Reverse String
先上题目思路:分别从头尾出发逐个读取字符,并将二者交换。当right>left时,反转完成。代码部分char* reverseString(char* s) { int i,len=strlen(s)-1; char temp; for(i=0;i<=len;i++,len--){ temp=s[i]; s[i]=s[len];...原创 2018-07-02 10:54:02 · 713 阅读 · 0 评论 -
C语言/476.(数字的补数) Number Complement
先上题目思路:补数如题所述,该数二进制取反。我尝试了一下直接整数异或发现不行。这里使用常规做法,取得一个整数,先将整数转换为二进制数(此处使用循环%2取余),得到二进制数的每一位的同时进行计算转换为整数。注意:得到的第一个数是最低位的二进制数,逐个往高位走,所以我们可以增加一个计数变量,判断每次循环得到的数需乘以2的几次方。代码部分:int findComplement(int num) { ...原创 2018-07-02 10:38:16 · 972 阅读 · 0 评论 -
C语言/832.(翻转图像)Flipping an Image
先上题目思路,暴力做法,循环头尾逐个移动到中间,同时进行交换。#include <stdio.h>#include <string.h>int main(){ int i,j,AIlen,AJlen,temp,Jtemp; int A[5][5]={{1,0,0,1,0},{1,0,1,1,0},{1,1,1,1,0},{1,0,1,1,1},{0,0...原创 2018-07-01 15:31:04 · 1209 阅读 · 0 评论 -
C语言/657.(判断路线成圈)Judge Route Circle
先上题目:思路:坐标问题,二维坐标,可以从互逆方向上是否能达到平衡判断。所以可以将其处理成两个方向变量问题,判断变量最终是否发生变化。代码部分:bool judgeCircle(char* moves) { int UD,LR,i; UD=LR=i=0; while(moves[i]!='\0'){ switch(moves[i]){ ...转载 2018-07-01 15:21:09 · 379 阅读 · 0 评论 -
C语言/461.(汉明距离)Hamming Distance
先上题目 思路:两个整数的二进制表示形式之间,不同的位数的“数量”。两种方式,一、先转换为二进制,逐位比较。二、先将两个整数进行^(异或,相同为零,不同为1),同时进行计数可以求出相同或不同的数量。 代码部分:int hammingDistance(int x, int y) { int n,temp,count=0; //count为计数...转载 2018-07-01 15:07:59 · 1855 阅读 · 0 评论 -
C语言/771.宝石与石头
在做这道题的时候,发现了一个细节。这个细节可以提高我们的算法效率(本题中12ms—>4ms),多积累能帮助我们写出更高效的代码吧原创 2018-06-26 13:37:13 · 1183 阅读 · 0 评论 -
1.C语言/两数之和
先上题目这里以在函数里做为前提:思路:题意是数组里找一个数与另一个数,最容易的做法即是两层遍历所有数,找出其中匹配的两个。int* twoSum(int* nums, int numsSize, int target) { int i,j; for(i=0;i<numsSize-1;i++){ for(j=i+1;j<numsSize;j++){ ...原创 2018-06-19 12:10:45 · 887 阅读 · 0 评论 -
C语言/7.反转整数
先上问题:思路:这道题非常类似于回文数的数字解法,逐个取数即可。重点在于限制输出数值范围,第一种直接限制数值范围int reverse(int x) { int temp,result=0;; if(x>1534236461||x>=2147483642||x<(-2147483641)) return 0; while(x){ temp=...原创 2018-06-25 09:26:58 · 1804 阅读 · 2 评论 -
C语言/28.实现strStr()
先上题目:思路:暴力解法(for循环遍历),这道题没有做好,效率太低,勉强通过了。后续更换答案int strStr(char* haystack, char* needle) { int i,j,result=-1; if(needle[0]=='\0') return 0; if(strstr(haystack,needle)==NULL) return -1; ...原创 2018-06-24 11:03:36 · 677 阅读 · 0 评论 -
13.C语言/罗马数字转整数
先上题目:思路:这道题比较容易,关键在于I,X,C的运算会受后一位(右边一位)数字的影响。int romanToInt(char* s) { int i,result=0; for(i=0;i<strlen(s);i++){ if(s[i]=='I') if(s[i+1]=='V'||s[i+1]=='X') ...原创 2018-06-22 00:05:27 · 1913 阅读 · 0 评论 -
9.C语言/回文数
先上题目思路:这道题最简单的解方式就是,将原有数倒置后与原有数比较,相同即为回文数,反之不是。 在数据不大的时候,此种解法效率还算高。但当数据特别大的时候,效率就会变得很低。 另一种解题思路则是以中心轴将数划分为两部分,分别从头,尾(head++,tail--)一一对应进行比较,直至头大于尾(head>tail)结束。可以考虑从字符数组方面开始,处理重点在于将数字转化为...原创 2018-06-21 17:38:46 · 969 阅读 · 0 评论 -
C语言/693.(交替二进制数) Binary Number with Alternating Bits
先上题目思路:1.将输入数转换为二进制(此处采用循环%2)2.得到的每一位数与下一位数next_number相比,相同直接返回false;不同则result=true;循环结束后返回result代码部分bool hasAlternatingBits(int n) { int number,next_number; bool result=false; while(n){ ...原创 2018-07-08 00:20:45 · 463 阅读 · 0 评论