wordpress小程序模板,seo需要会网站建设吗,想学做宝宝食谱上什么网站,上海网站建设 迈之前写了一篇重点是讲理论#xff0c;今天重点在于对于题目的分析
题目难度不分先后#xff0c;有题目来源会直接给出链接或者位置 第一题#xff1a;消失的数字 题目来源#xff1a;LeetCode消失的数字 分析 第一种思路分析#xff1a; 参考代码#xff1a;
#include …之前写了一篇重点是讲理论今天重点在于对于题目的分析
题目难度不分先后有题目来源会直接给出链接或者位置 第一题消失的数字 题目来源LeetCode消失的数字 分析 第一种思路分析 参考代码
#include cstdio
#include algorithmusing namespace std;int find_disappear(int nums[], int len)
{int res -1;//保存结果-1代表值没有被改变//先对数组进行排序sort(nums, nums len);//需要两个参数,数组头指针与指针,但是这里不包括尾指针,所以指向数组越界的位置for (int i 0; i len; i){if (i ! nums[i]) {//这里直接缺少的就是ires i;}}//这里就是没有匹配到的情况,就是最大的索引if (res -1) {res len;} return res;
}int main()
{int arr[] {0, 1, 2};//这里长度要单独拿出来计算因为arr传入到find函数里面会直接当成一级指针来进行处理//指针一般也就是一般windows上4个字节linux上八个字节来进行处理int len sizeof(arr) / sizeof(arr[0]);int res find_disappear(arr, len);printf(缺失的数字是:%d\n, res);return 0;
}时间复杂度为O(nlogn)明显与题目要求不符合no_pass
下面是第二种思路分析 #include cstdioint find_number(int *nums, int len)
{//正确的长度是int len_correct len 1;//计算正确求和值int sum_correct (len_correct * (len_correct - 1)) / 2;int sum_wrong 0;//非正确的求和值 //开始轮替计算非正确的值然后相减for (int i 0; i len; i){sum_wrong nums[i];//因为i本身就是从0开始的所以用i来累加求和}return sum_correct - sum_wrong;
}int main()
{int arr[] {0, 1, 3};int res find_number(arr,3);printf(%d\n, res);return 0;
}时间度O(n),通过
leetcode提交代码
class Solution {
public:int missingNumber(std::vectorint nums) {int len_correct nums.size() 1;int sum_correct (len_correct * (len_correct - 1)) / 2;int sum_wrong 0;for (int i 0; i nums.size(); i) {sum_wrong nums[i];}return sum_correct - sum_wrong;}
};java代码的实现 java小知识点补讲
1.一个类中的静态方法在new一个非静态成员成员内部类的时候成员内部类必须是static的
也就是说下面这种写法是错误的 应该换成下面这种写法 如果你实在想内部类不设置为static的那么也可以按照如下方式来做 说一下原因main是一个静态方法也就是说它是先对对象而存在的如果Solution是一个依赖于Lc对象才存在的对象那么如果直接new Solution肯定是不行的因为Lc这个类都没有被加载到内存里面来也就是说这个类在内存里面是没有空间的Lc没有空间那么它的内部类 Solution凭什么会有空间。另外说一句类加载到方法区是不一定会去创建这个类的实例的他只会把类的相关信息封存起来放到一个Class相关类的一个字节码对象里面
说一下上面的类加载到方法区的机制 下面看具体的代码
public class Lc {static class Solution {public int missingNumber(int[] nums) {//先求出正确的和int correct_len nums.length 1;int correct_sum correct_len * (correct_len - 1) / 2;int wrong_sum 0;//保留不正确的和for (int i 0; i nums.length; i) {wrong_sum nums[i];}return correct_sum - wrong_sum;}}public static void main(String []args) {int[] nums {3, 0, 1};Solution solution new Solution();int res solution.missingNumber(nums);System.out.println(res);}
}上面代码自行提交具体逻辑分析看上面c代码分析
持续更新中。。。。。。