package homework2;

import java.io.ObjectInputStream.GetField;
import java.util.Arrays; public class HomeWork { public static void main(String[] args) {
yi();
er();
san();
si();
} /*
* 题目1 : 两数之和 (简单) 给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。
* 函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。
*/
public static void yi() {
int[] arr = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int target = 19;
for (int i = 0; i < arr.length - 1; i++) {
for (int j = i + 1; j < arr.length; j++) {
if (target == arr[i] + arr[j]) {
System.out.println(i + ":" + j);
return;
}
}
} System.out.println("yi");
} /*
* 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
*/
public static void er() {
int[] arr = { 1, 2, 0, 3, 0, 4, 5, 6, 7, 8, 9, 10 };
int[] dp = new int[arr.length]; // 记录在 i 之前有多少个 0!!! int count = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[i] == 0)
++count;
dp[i] = count;
}
for (int i = 0; i < arr.length; i++) {
if (arr[i] != 0) {
arr[i - dp[i]] = arr[i];
}
if (arr.length - i <= count)
arr[i] = 0;
}
System.out.println(Arrays.toString(arr));
} /*
* 给定一个字符串,逐个翻转字符串中的每个单词。
*/ public static void san() {
String str = "the sky is blue ";
int count = 1;
String s = "";
for (int i = str.length() - 1; i > -1; i--, count++) {
if (str.charAt(i) == ' ' && i != 0) {
String ss = "";
for (int j = i + 1; j < i + count; j++) {
ss += str.charAt(j);
}
s = s + ss + ' ';
count = 0;
}
if (i == 0) {
String ss = "";
for (int j = i; j < i + count; j++) {
ss += str.charAt(j);
}
s = s + ss;
}
}
System.out.println(s);
} /*
* 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0
* ?找出所有满足条件且不重复的三元组。 注意:答案中不可以包含重复的三元组。
*/
public static void si() {
int[] arr = { -1, -2, 0, 3, 0, -4, 5, 6, 7, -8, -9, 10 };
     //dp 存特征数
         //size 存特征数的个数
         //getValue 计算特征数
class Data{
int[] dp = new int[arr.length];
int size = 0;
public int getValue(int x, int y, int z){
int i = 1;
if(x*y*z < 0) i = -1;
return x*x * y*y * z*z * i;
}
public boolean find(int data){
for(int i = 0; i < size; i++){
if (data == dp[i]){
return false;
}
}
dp[size++] = data;
return true;
}
}
Data data = new Data(); for (int i = 0; i < arr.length; i++) {
ok:
for (int j = i+1; j < arr.length; j++) {
for (int k = j+1; k < arr.length; k++) {
if(arr[i] + arr[j] + arr[k] ==0){
int num = data.getValue(arr[i], arr[j], arr[k]);
if(data.find(num)){
System.out.println("[" + arr[i] + ", "+ arr[j] + ", "+ arr[k] + "]");
}
break ok;
}
}
}
} }
}

  对于第四题 一共三个数字 X Y Z 相加得零 他们重复的情况下 : 计算 X² + Y² + Z² ( 1 2 -3  ->> 1 + 4 +  9 = 14),
  i 值  : 两个负数则为 1 一个负数则为 负1 (1 2 -3  ->>  14 * i  ->> -14 , -1 -2 3 ->> 14 * i  ->> 14 这两个就是个例子)

JavaSE 第二次学习随笔(作业一)的更多相关文章

  1. JavaSE 第二次学习随笔(五)

    /* * 中文乱码出现的情况研究 * 注意点:乱码解决的办法是再编码再解码 * 但是如果是编码出错了,无法解决.如果是解码出错了,可以利用再编码再解码 * * * 编码 解码 结果 * GBK utf ...

  2. JavaSE 第二次学习随笔(四)

    ---------------------------------------------------------------------------------------------------- ...

  3. JavaSE 第二次学习随笔(三)

    * 常见异常 * 数组越界异常 * 空指针异常 * * * 特点: 当程序出现异常的时候, 程序会打印异常信息并中断程序 * 所以当同时出现多个异常的时候只能执行第一个, 后边的用不到 * * 单异常 ...

  4. JavaSE 第二次学习随笔(二)

    循环结构中的多层嵌套跳出 targeta: for(int i = 0; i < 100; i++){ for (int j = 0; j < 100; j++) { if(i + j = ...

  5. JavaSE 第二次学习随笔(关于内存的小题)

    class HelloA { public HelloA() { System.out.println("HelloA"); } { System.out.println(&quo ...

  6. JavaSE 第二次学习随笔(String的坑 + ==)

    String 类是一个final类, 其内部是使用的 private final char value[]; 来存储内容, 其既可以当作一个基本类型来使用也可以当作一个类来使用;final 类(Str ...

  7. JavaSE 第二次学习随笔(一)

    Java是一种区分大小写的强类型准动态语言 动态语言,是指程序在运行时可以改变其结构:新的函数可以被引进,已有的函数可以被删除等在结构上的变化,类型的检查是在运行时做的,优点为方便阅读,清晰明了,缺点 ...

  8. 20135328信息安全系统设计基础第二周学习总结(vim、gcc、gdb)

    第三周学习笔记 学习计时:共8小时 读书:1 代码:5 作业:1 博客:7 一.学习目标 熟悉Linux系统下的开发环境 熟悉vi的基本操作 熟悉gcc编译器的基本原理 熟练使用gcc编译器的常用选项 ...

  9. 2017面向对象程序设计(Java)第二周学习总结

    2017面向对象程序设计(Java)第二周学习总结 直系学妹学弟们好!额...不要问我为什么把学妹放前面,我也不知道!我只是你们和蔼可亲的学长一枚而已.也不要问为什么是第二周学习总结而不是第一周,因为 ...

随机推荐

  1. Win7无法将图标(Chrome谷歌浏览器更新后无法锁定也适用)锁定到任务栏解决办法

    “将程序锁定到任务栏”是Windows 7中的一个非常有用的功能,它比之前的快速启动栏要来得简洁.但是我用了一段时间之后,发现“锁定到任务栏”这一个选项消失了,对图标点右键找不到这个图标,直接把图标拖 ...

  2. JS获取前一个页面

    document.referrer 可以得到上一个点击超连接进来的页面URL注意:只能访问服务器上页面使用,打开本地文件无效(为空字符串)

  3. 关于hibernate save方法未能存储数据入库的处理过程

    关于hibernate save方法未能存储数据入库的处理过程2018年04月18日 10:57:49 守望dfdfdf 阅读数:230更多个人分类: 工作 问题编辑版权声明:本文为博主原创文章,转载 ...

  4. python复习目录

    目录 一.计算机基础 二.python 2.1初始python 2.1 python基础1 2.2 python基础2 三.函数 3.1 函数进阶 3.2 函数之装饰器 3.3 递归函数之二分查找 3 ...

  5. 处理移动端自适应布局的方法- calc()与vw

    在处理移动端自适应布局时,目前前端最流行的方法应该就是使用媒体查询,来设置HTML的字体大小,然后用rem为单位对Dom的宽高进行设置,这个方法的优势在于兼容性方面很好,劣势则在于当前市场上不同的机型 ...

  6. oracle笔记2-多表查询和子查询

    --查询出当前用户下的所有表 select table_name from user_tables; --执行顺序原则:  from  where group by  having   select  ...

  7. Java设计模式—中介者模式

    中介者模式是一种并不常用的模式,在此简单阐述阐述. 定义:用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互. 类型:行为类模式 ...

  8. [SVN]TortoiseSVN工具培训2─SVN的基本概念和工作模式

    1.SVN是什么? TortoiseSVN,属于集中式版本控制工具,是Subversion版本控制系统的一个免费SVN开源客户端,可以对文件版本进行统一管理和控制:文件保存在中央版本库,您可以将文件恢 ...

  9. nginx配置优化-生产环境应用版

    user www www; worker_processes auto; worker_cpu_affinity auto; error_log /usr/local/nginx/logs/error ...

  10. 解决频繁自动弹出“QQ拼音升级程序”,可使用旧版QQ输入法

    QQ输入法(2017年9月6日版本)下载地址: http://dlc2.pconline.com.cn/filedown_90891_8506339/BZXMP3fp/QQPinyin_Setup_5 ...