力扣(LeetCode)刷题,简单题(第1期)
目录第1题:两数之和第2题:整数反转第3题:判断回字文第4题:罗马数字转整数第5题:最长公共前缀第6题:判断字符串有效括号第7题:将两个有序链表合并第8题:删除重复元素第9题:移除元素第10题:实现strStr()函数开启2020年学习新征程,力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求...
·
目录
开启2020年学习新征程,力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升。
第1题:两数之和
试题要求如下:
回答(C语言):
int* twoSum(int* nums, int numsSize, int target, int* returnSize){
int* res = (int *)malloc(sizeof(int) * 2);
for(int i = 0; i < numsSize-1; i++) {
for(int j = i + 1; j < numsSize; j++) {
if(nums[i] + nums [j] == target) {
res[0] = i;
res[1] = j;
*returnSize = 2;
return res;
}
}
}
*returnSize = 0;
return res;
}
第2题:整数反转
试题要求如下:
回答(C语言):
int reverse(int x){
long num = 0;
while (x != 0) {
num = num * 10 + x % 10;
x = x / 10;
}
return (num>2147483647 || num<-2147483648) ? 0 : num;
}
第3题:判断回字文
试题要求如下:
回答(C语言):
bool isPalindrome(int x){
int num1=0;
long num2=0;
num1=x;
while(num1>0){
num2=num2*10+num1%10;
num1/=10;
}
if(num2==x)
return 1;
else
return 0;
}
第4题:罗马数字转整数
试题要求如下:
回答(C语言):
int charToInt(char c)
{
char strArray[7] = {'I','V','X','L','C','D','M'};
int intArray[7] = {1,5,10,50,100,500,1000};
for(int i = 0; i < 7; i++)
{
if(strArray[i] == c)
{
return intArray[i];
}
}
return 0;
}
int romanToInt(char * s)
{
int len = strlen(s);
int v = 0;
int c,n;
for(int i = 0; i < len - 1 ; i++)
{
c = charToInt(s[i]);
n = charToInt(s[i + 1]);
v = (c < n) ? v - c : v + c;
}
v += charToInt(s[len - 1]);
return v;
}
第5题:最长公共前缀
试题要求如下:
回答(C语言):
char * longestCommonPrefix(char ** strs, int strsSize)
{
if(strsSize==0)
return "";
if(strsSize==1)
return strs[0];
int i=0,j=0;
while(1)
{
if(strs[i][j]=='\0')
break;
if(strs[i][j]==strs[++i][j]) {
if(i==strsSize-1)
{
j++;
i=0;
}
}
else
break;
}
char* res=(char*)malloc(j+1);
res=memset(res,0,j+1);
res=strncpy(res,strs[0],j);
return res;
}
第6题:判断字符串有效括号
试题要求如下:
回答(C语言):
bool isValid(char * s){
int top = 0;
char *stack = (char*)malloc(strlen(s));
if (s==NULL || strlen(s)<=0) return true;
for (int i = 0; i<strlen(s); i++){
if(s[i]=='(' || s[i]=='{' || s[i]=='['){
stack[top++] = s[i];
}else{
if(--top < 0) return false;
if(s[i]==')' && stack[top] != '(') return false;
if(s[i]=='}' && stack[top] != '{') return false;
if(s[i]==']' && stack[top] != '[') return false;
}
}
if (top > 0) return false;
return true;
}
第7题:将两个有序链表合并
试题要求如下:
回答(C语言):
struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2) {
if(l1==NULL)
return l2;
if(l2==NULL)
return l1;
if(l1->val < l2->val){
l1->next = mergeTwoLists(l1->next,l2);
return l1;
}else{
l2->next = mergeTwoLists(l1,l2->next);
return l2;
}
}
第8题:删除重复元素
试题要求如下:
回答(C语言):
int removeDuplicates(int* nums, int numsSize){
int j=0;
if(nums==NULL || numsSize<=0)
return 0;
for(int i=0;i<numsSize-1;i++){
if(nums[i]!=nums[i+1])
{
nums[j++]=nums[i];
}
}
nums[j]=nums[numsSize-1];
return j+1;
}
第9题:移除元素
试题要求如下:
回答(C语言):
int removeElement(int* nums, int numsSize, int val){
int cou=0;
if(nums==NULL || numsSize<=0)
return 0;
for(int i=0;i<numsSize;){
if(nums[i]==val){
cou++;
if(i==numsSize-cou)
break;
for(int j=i,k=i+1;j<numsSize-cou;j++,k++)
nums[j]=nums[k];
}
else
{
i++;
}
}
return numsSize-cou;
}
第10题:实现 strStr() 函数
试题要求如下:
回答(C语言):
int strStr(char * haystack, char * needle){
int i=0,j=0,k=0;
while(haystack[i]&&needle[j])
{
if(haystack[i]==needle[j])
{
i++;
j++;
}
else
{
k++;
i=k;
j=0;
}
}
if(needle[j]=='\0')
return k;
return -1;
}
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献29条内容
所有评论(0)