第四周后端组作业
- 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,不要使用额外的数组空间,你必须在 原地 修改输入数组
说明:原地删除重复出现的元素即为不能申请额外的数组空间,只能在原有数组上进行修改
示例1:
输入: 3 1,1,2
输出:2, nums =[1,2]
解释:应该输出新的长度 2 ,并且原数组 nums 的前两个元素被修改为 1, 2 。不需要考虑数组中超出新长度后面的元素。 输入数据第一个为数组的个数,后面为数组的参数 示例 2:输入:10 0,0,1,1,1,2,2,3,3,4 输出:5, nums = [0,1,2,3,4] 解释:函数应该返回新的长度 5 , 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4 。不需要考虑数组中超出新长度后面的元素。 输入数据第一个为数组的个数,后面为数组的参数
提示:
0 <= nums.length <= 3 * 104-104 <= nums[i] <= 104nums 已按升序排列
public class Main {public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.print("请输入你的数组大小: ");int n;n = input.nextInt();int[] nums = new int[n];System.out.print("请输入数组的元素: ");for(int i = 0; i<n; i++) {nums[i] = input.nextInt();}Arrays.sort(nums);//排序 升序int slow = 0;//慢指针int fast;//快指针//当快指针和慢指针所指向的值不一样时就将慢指针的值加一 并且将慢指针只指向快指针当前的值for(fast = 1;fast<n;fast++) {if(nums[slow]!=nums[fast]) {slow++;nums[slow] = nums[fast];}}System.out.print("长度: ");System.out.print(slow+1);System.out.print("去重后的数组: ");for(int i =0; i<=slow; i++) {System.out.print(nums[i]+" ");}}}
结果:
- 给定一个数组,将数组中的元素向右移动
k个位置,其中k是非负数。
示例一:
输入:
1,2,3,4,5,6,7
k=3
输出:
[5,6,7,1,2,3,4]
解释:
向右旋转 1 步: [7,1,2,3,4,5,6]
向右旋转 2 步: [6,7,1,2,3,4,5]
向右旋转 3 步: [5,6,7,1,2,3,4]
要求:大二同学解此题不允许使用临时数组存取数据,只能在原数组上进行修改
代码:
package Weekly_Task.four;/*** @auther Devil(丁杨维)* @create 2021-11-08-16:54*/import java.util.Scanner;public class Demo2 {public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.print("输入数组的长度: ");int n;n = input.nextInt();int[] nums = new int[n];System.out.print("输入数组的元素: ");for(int i = 0; i<n; i++) {nums[i] = input.nextInt();}System.out.print("请输入你要向右移动的位次数: ");int k = input.nextInt();while(k-->0) {int temp = nums[n-1];for(int i = n-2; i>=0; i--) {nums[i+1] = nums[i];}nums[0] = temp;}for(int i=0; i<nums.length; i++) {System.out.print(nums[i]+" ");}}}
结果:
- 请写出下面代码的输出结果(自己先看着代码思考,写出答案,不要用编辑器运行)
//爷爷类class Ye {public String show(Sun obj) {return ("Ye and Sun");}public String show(Ye obj) {return ("Ye and Ye");}}//爸爸类class Fu extends Ye {public String show(Fu obj) {return ("Fu and Fu");}public String show(Ye obj) {return ("Fu and Ye");}}//儿子类class Zi extends Fu {}//孙子类class Sun extends Fu {}public class PolymorphicTest {public static void main(String[] args) {Ye y = new Ye();Ye y2 = new Fu(); //向上Fu f = new Fu();Zi z = new Zi();Sun s = new Sun();System.out.println("第一题 " + y.show(f));System.out.println("第二题 " + y.show(z));System.out.println("第三题 " + y.show(s));System.out.println("第四题 " + y2.show(f));System.out.println("第五题 " + y2.show(z));System.out.println("第六题 " + y2.show(s));System.out.println("第七题 " + f.show(f));System.out.println("第八题 " + f.show(z));System.out.println("第九题 " + f.show(s));}}
你的答案:第一题 :"Ye and Ye"第二题 :"Ye and Ye"第三题 :"Ye and Sun"第四题 :"Fu and Fu"第五题 :"Fu and Fu"第六题 :"Ye and Sun"第七题 :"Fu and Fu"第八题 :"Fu and Fu"第九题 :"Ye and Sun"
如果你对答案很意外,或者不解,那么恭喜你,你又能学到新知识了,再去深入了解一下多态吧。
- 请将这张图片从D:\images\EDG.png 用java代码将其拷贝到D:\img\EDG.png
提示:在自己D盘下新建文件夹images,将这张图片粘贴进去并改名
public class Main {public static void main(String[] args) throws Exception {File file = new File("D:\\img");if(!file.exists()) {file.mkdir();}File file1 = new File("D:\\img\\EDG.png");if(!file1.exists()) {file1.createNewFile();}FileInputStream is = new FileInputStream("D:\\images\\EDG.png");FileOutputStream os = new FileOutputStream(file1);byte[] b = new byte[1024];int len;while((len = is.read(b))!=-1) {os.write(b,0,len);}os.flush();os.close();is.close();}}
- 简单的在线信息接收
要求:用户能在客户端向服务端发送信息,服务端能够接收用户所发信息,用户向服务端发送“ bye”结束发送
服务器:
package Weekly_Task.four;import java.io.BufferedReader;import java.io.InputStreamReader;import java.net.ServerSocket;import java.net.Socket;import java.util.Scanner;/*** @auther Devil(丁杨维)* @create 2021-11-08-13:46*/public class Server {public static void main(String[] args) throws Exception {ServerSocket serverSocket = new ServerSocket(9999);Socket s = serverSocket.accept();;BufferedReader br = null;Scanner input = new Scanner(System.in);System.out.println("==服务端启动==");while(true){br = new BufferedReader(new InputStreamReader(s.getInputStream()));String m = br.readLine();System.out.println("服务器收到: "+m);if("bye".equals(m)){System.out.println("服务器结束运行");break;}}s.close();serverSocket.close();}}
客户端:
package Weekly_Task.four;import java.io.*;import java.net.InetAddress;import java.net.Socket;import java.net.UnknownHostException;import java.util.Scanner;/*** @auther Devil(丁杨维)* @create 2021-11-08-13:45*/public class Client {public static void main(String[] args) throws Exception {Socket socket = new Socket(InetAddress.getByName("localhost"),9999);Scanner input = new Scanner(System.in);BufferedWriter bw = null;System.out.println("==客户端启动==");while(true){System.out.print("请说: ");String message = input.nextLine();bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));bw.write(message);bw.newLine();bw.flush();if(message.equals("bye")){System.out.println("退出连接");break;}}}}
运行实例:

