嘉峪关建设路小学网站,wordpress 语言选择,网站提取规则怎么设置,西安百度推广多少钱坚持就是胜利 一、两数之和
题目链接#xff1a;https://leetcode.cn/problems/two-sum/
给定一个整数数组 nums 和一个整数目标值 target#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数#xff0c;并返回它们的数组下标。
你可以假设每种输入只会对应…坚持就是胜利 一、两数之和
题目链接https://leetcode.cn/problems/two-sum/
给定一个整数数组 nums 和一个整数目标值 target请你在该数组中找出 和为目标值 target 的那 两个 整数并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
示例 1
输入nums [2,7,11,15], target 9 输出[0,1] 解释因为 nums[0] nums[1] 9 返回 [0, 1] 。 示例 2
输入nums [3,2,4], target 6 输出[1,2] 示例 3
输入nums [3,3], target 6 输出[0,1]
提示
2 nums.length 104 -109 nums[i] 109 -109 target 109 只会存在一个有效答案
进阶你可以想出一个时间复杂度小于 O(n2) 的算法吗
代码©
/*** Note: The returned array must be malloced, assume caller calls free().*/
int* twoSum(int* nums, int numsSize, int target, int* returnSize){for(int i 0;i numsSize;i){for(int j i1;j numsSize;j){if(nums[i]nums[j] target){int* ret malloc(sizeof(int) * 2);ret[0] i, ret[1] j;*returnSize 2;return ret;}}}*returnSize 0;return NULL;
}二、两数相加
题目链接https://leetcode.cn/problems/add-two-numbers/
给你两个 非空 的链表表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的并且每个节点只能存储 一位 数字。
请你将两个数相加并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外这两个数都不会以 0 开头。
示例 1
输入l1 [2,4,3], l2 [5,6,4] 输出[7,0,8] 解释342 465 807. 示例 2
输入l1 [0], l2 [0] 输出[0] 示例 3
输入l1 [9,9,9,9,9,9,9], l2 [9,9,9,9] 输出[8,9,9,9,0,0,0,1]
提示
每个链表中的节点数在范围 [1, 100] 内 0 Node.val 9 题目数据保证列表表示的数字不含前导
代码©
/*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) {struct ListNode *head NULL, *tail NULL;int carry 0;while (l1 || l2) {int n1 l1 ? l1-val : 0;int n2 l2 ? l2-val : 0;int sum n1 n2 carry;if (!head) {head tail malloc(sizeof(struct ListNode));tail-val sum % 10;tail-next NULL;} else {tail-next malloc(sizeof(struct ListNode));tail-next-val sum % 10;tail tail-next;tail-next NULL;}carry sum / 10;if (l1) {l1 l1-next;}if (l2) {l2 l2-next;}}if (carry 0) {tail-next malloc(sizeof(struct ListNode));tail-next-val carry;tail-next-next NULL;}return head;
}
三、无重复字符的最长子串
题目链接https://leetcode.cn/problems/longest-substring-without-repeating-characters/
给定一个字符串 s 请你找出其中不含有重复字符的 最长子串 的长度。
示例 1:
输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”所以其长度为 3。 示例 2:
输入: s “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”所以其长度为 1。 示例 3:
输入: s “pwwkew” 输出: 3 解释: 因为无重复字符的最长子串是 “wke”所以其长度为 3。 请注意你的答案必须是 子串 的长度“pwke” 是一个子序列不是子串。
提示
0 s.length 5 * 104 s 由英文字母、数字、符号和空格组成
代码©
int lengthOfLongestSubstring(char * s)
{//类似于hash的思想//滑动窗口维护int left 0;int right 0;int max 0;int i,j;int len strlen(s);int haveSameChar 0;for(i 0; i len ; i ){if(left right){ //检测是否出现重复//循环遍历整个数组 left - righthaveSameChar 0;for(j left; j right ; j){if(s[j] s[right]){haveSameChar 1;break;}}if(haveSameChar){//指向下一个left j 1;}}//统计最大的间距max max (right - left 1) ? (right - left 1): max;right;}return max;
}