java基础刷题笔记9
Java刷题笔记9T1 又是类内执行顺序
类中的静态部分,从上到下运行,先遇见谁执行谁;所以先执行publicstaticTest t1 =new Test();
在new Test()的过程中已经执行了一次静态成员函数的初始化了,所以接着往下执行,关于static的运行是类的事,实例化的过程中不管他,所以接着输出了A
再找到静态块static,这里输出B
最后在main方法中,重复了一次实例化的过程,输出A
T2 自动转型被final修饰的变量是常量,这里的b6=b4+b5可以看成是b6=10;在编译时就已经变为b6=10了
而b1和b2是byte类型,java中进行计算时候将他们提升为int类型,再进行计算,b1+b2计算后已经是int类型,赋值给b3,b3是byte类型,类型不匹配,编译不会通过,需要进行强制转换。
Java中的byte,short,char进行计算时都会提升为int类型。
T3 类的构造&继承&实例化Test.main()函数执行后的输出是( )
1234567891011121314151617181920212223242526272 ...
23/10/16 算法每日一题
题目1、油壶里有10升油,现在只有两个分别能装3升和7升油的瓶子,需要将10 升油等分成2 个5 升油。程序输出分油次数最少的详细操作过程。
选作:将油壶的容量改为L 升,两个瓶子的容量分别为M 和N 升,其中:L、M和N 均为正整数,且L 为正偶数、L = M + N,输出利用这两个瓶子将油壶中油等分的最少操作过程,如果不能等分,输出“None”。
按照下面的思路进行模拟
输出None时的判断参考倒水问题,这里相当于是倒水问题的特解
倒水问题的万能解法(扩展欧几里得算法)
Java算法实现1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980//package src.main.com.hantouInWIT2021.test1;public class test1 { public static void main(Str ...
MIT 6046 L3 快速傅里叶变换 学习笔记
MIT6.046算法设计 L3 快速傅里叶变换(分治思想) 学习笔记
这是一篇不求甚解的笔记(因为作者太菜),只是大概的粗略的了解了一下快速傅里叶变换的的分治思想你看这篇文章并不能让你学会FFT!这篇笔记真的很水!
推荐视频:快速傅里叶变换(FFT)——有史以来最巧妙的算法?
导入对于一个多项式A(x)=a0+a1x+a2x^2+…+a(n-1)x^(n-1)
其有多少种不同的表示方式
系数表达可以将多项式抽象为一个向量(a0,a1,a2,a3,…an−1); 每个向量都与一个多项式一一对应
点值表达,对于一个多项式,给定n个数值x0,x1,….,x(n-1)带入A(x)即可确定一个n-1项的多项式
n个点可以确定一个n-1的多项式
加法式?
多项式不同表达方法对多项式计算的时间复杂度
如何获取最佳的多项式运算的时间复杂度?从上图中我们可以看出,系数表达式的乘法较为复杂,而点值表达的求值运算比较复杂有没有一种方法,能让系数表达方法和点值表达方法之间相互转换,让所有运算都能在O(n)时间复杂度内完成?
快速傅里叶变换 FFT如果我们需要求两个多项式的乘积
比如Ax,Bx都是 ...
MIT 6046 R1 矩阵乘法与主定理 学习笔记
MIT6.046算法设计 R1 矩阵乘法与主定理 学习笔记带权区间调度在L1中我们学习了区间调度
现在对每个任务加权,要如何处理得到最大和?假设每一个任务都是潜在的第一个被执行的任务,将这个任务设为任务j,则得到他的权重w[j];
对于j后面的任务,我们也进行同样的尝试,定义Rj为{ i | s(i) > f(j)},解释一下,Rj是请求的集合,其中他们的完成时间晚于第j个请求的停止时间
我们称原来的问题为WIS(1,2,….n),则可以将其拆分为若干子问题
WIS: Weighted Interval Scheduling 带权区间调度
最终不断地解决子问题,最后得到答案为 max(j<=j<=n){w[j]+WIS(R[j])}, 时间复杂度为n^2
Can we do better?哪里拖慢了效率?上面的方法对所有的子问题都进行了尝试,包括那些明显不满足条件的
具体来说,当我们尝试了请求2作为开始的请求后,对于以请求3开始的子问题,其实是请求2作为开头的请求的子问题,就是 以请求3开头的结果的权重和 等于 以2开头的权重和 减去 请求2的权重
而上面 ...
java基础刷题笔记8
Java刷题笔记8T1 父类子类的调用假定Base b = new Derived(); 调用执行b.methodOne()后,输出结果是什么?
12345678910111213141516171819202122232425262728public class Base{ public void methodOne() { System.out.print("A"); methodTwo(); } public void methodTwo() { System.out.print("B"); }} public class Derived extends Base{ public void methodOne() { super.methodOne(); System.out.print("C"); } public void method ...
java基础刷题笔记7
Java刷题笔记7T1 变量定义
A. byte的取值范围为[-128, 127]
B. 可以将null赋给引用类型变量,但不可以将null赋给基本类型变量。
12345D. double a = 0.9239(√)double a = 0.9239d(√)float a = 0.9239f(√)float a = 0.9239(×)
T2 接口继承
Java中类是单继承,但接口可以多继承,Interfere1 extends Interface2,Interface3…
T3 线程
run()相当于线程的任务处理逻辑的入口方法,它由Java虚拟机在运行相应线程时直接调用,而不是由应用代码进行调用。
start()的作用是启动相应的线程。启动一个线程实际是请求Java虚拟机运行相应的线程,而这个线程何时能够运行是由线程调度器决定的。start()调用结束并不表示相应线程已经开始运行,这个线程可能稍后运行,也可能永远也不会运行。
T4 Collection