1 二维数组中的查找。
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
1 分析:左->右递增,上->下递增。
发现规律:
(1)从左下角开始查找,当要查找数字比左下角数字大时。右移。要查找数字比左下角数字小时。上移。
(2)右上角开始查找,当要查找数字比右上角数字大时。下移。要查找数字比右上角数字小时。左移。
(3)二分法,遍历所有行,对每一行使用二分法查找。
2 编码:
(1)记录矩阵特殊点(左下、右上)坐标,row(array.length-1),col(array[0].length-1)。注意二维数组行列的范围。
(2)比较大小,移动行列。
(3)二分法,注意low和high下标的变换。左侧high=mid-1,右侧low=mid+1。
// 左下角
public static boolean Find1(int target, int [][] array) {
int row = array.length-1;
int col = 0;
while(row>=0 && col<=array.length-1){
if(target == array[row][col]){
return true;
}else if(target >= array[row][col]){
col++;
}else{
row--;
}
}
return false;
}
/**
* 把每一行看成有序递增的数组,利用二分查找,通过遍历每一行得到答案,
* 时间复杂度是nlogn
* @param:
* @return:
* @date: 2018-3-12
*/
public static boolean Find3(int target, int [][] array) {
for(int i=0;i<array.length;i++){
int low = 0;
int high = array.length-1;
while(low<=high){
int mid = (low+high)/2;
if(target < array[i][mid]){
high = mid-1;
}else if(target > array[i][mid]){
low = mid+1;
}else{
return true;
}
}
}
return false;
}
2 护眼色的RGB值和颜色代码
色调:85;饱和度:123;亮度:205,
R: 199; G: 237; B:204;
181 229 181 ??IN WINDOWS
颜色代码是: #C7EDCC
3 真机访问Tomcat中的内容
地址:本机IP+端口号
如果该方法不行,可以尝试如下方法:
1 关闭防火墙;2 使用Technitium MAC Address Changer修改IP地址
或者使用Genymotion
https://www.cnblogs.com/liu184/articles/5621985.html
4 Android开发规范
http://keeganlee.me/post/android/20150709
自己制定的规范
<com.viewpagerindicator.TabPageIndicator
android:id="@+id/tp_my_indicator"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
第一部分:是控件缩写,使用第一二个大写字母组成
第二部分:是控件所属模块,例如my属于“我的”模块
第三部分:控件的作用。
系统常用灰色值
#D1D1D1
5 使用开源控件ViewPager Indicator时,报错Android java.lang.IllegalStateException: ViewPager has not been bound 的解决办法
使用开源控件ViewPager Indicator时,如果标题数据需要从服务器获取,然后再设置Adapter,这个时候就会报错:ViewPager has not been bound 的错误,其中一种解决办法是,先把 TabPageIndicator 设置为GONE属性,等加载完数据设置Adapter后,再将其设置为VISIBLE。
6 输入一个链表,从尾到头打印链表每个节点的值。
class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
public class PrintList {
/*
* 输入一个链表,从尾到头打印链表每个节点的值。
* */
public static void main(String[] args) {
ListNode listNode1 = new ListNode(2);
ListNode listNode2 = new ListNode(3);
ListNode listNode3 = new ListNode(4);
listNode1.next = listNode2;
listNode2.next = listNode3;
ArrayList<Integer> printListFromTailToHead = printListFromTailToHead1(listNode1);
int sum = 0;
for(int i : printListFromTailToHead){
sum+=i;
}
System.out.println(sum);
}
static ArrayList<Integer> arrayList=new ArrayList<Integer>();
/**
* 通过递归的方式完成
* @param:
* @return:
* @date: 2018-3-13
*/
public static ArrayList<Integer> printListFromTailToHead1(ListNode listNode) {
if(listNode!=null){
arrayList.add(listNode.val);
if(listNode.next!=null){
printListFromTailToHead1(listNode.next);
}
}
return arrayList;
}
/**
* 通过堆栈的方式
* @param:
* @return:
* @date: 2018-3-13
*/
public static ArrayList<Integer> printListFromTailToHead2(ListNode listNode) {
//堆栈
Stack<Integer> stack = new Stack<Integer>();
while(listNode!=null){
stack.push(listNode.val);
listNode = listNode.next;
}
//取值,累加
ArrayList<Integer> list = new ArrayList<Integer>();
while(!stack.isEmpty()){
list.add(stack.pop());
}
return list;
}
}
7开源控件ViewPagerIndicator的使用
下面的链接写的很好。
https://www.jianshu.com/p/a2263ee3e7c3
https://www.cnblogs.com/wangying222/p/5863928.html
http://blog.csdn.net/ithouse/article/details/49026917(标题显示不全)
补充一点就是,在初始的AndroidMainfest.xml的Activity中要引用主题。还包括清除头标题。
8 Activity管理Fragment之Fragment关闭当前回到之前Fragment
http://blog.csdn.net/u012382791/article/details/51027507
9 一篇论文完成时,需要问自己几个问题,看是否能回答的出来:
Tips about paper writing and reading
1) 论文的重点是什么?是否已经明确表述?——不要让读者去找,要明确的告诉;
2) 关键技术思想是什么?表述是否清楚?——同上;
3) 你提出的问题是什么?该问题为什么重要?
4) 其他研究者是如何提出同样或者相似问题的?你的方法有什么不同或者为什么好些?
5) 对你提出的问题,你是如何解决的?有什么结果?
批判性的阅读理解文章,回答如下问题:
1) 提出问题的动机是什么?
2) 找出解决方案做出的选择是什么?
3) 解决方案后面有假设吗?是什么?
4) 假设是否明智?是否可以去掉(在不使方法失效的情况下)?
5) 将来的研究方向是什么?
6) 什么是确实完成了或者实现了?
7) 方法依赖的理论依据是什么,是否充分有效?
10 PullToRefreshListView中Item的下标从1开始
11 Android studio查看SQLIte数据库文件
1 http://blog.csdn.net/u014005316/article/details/53674028
2 http://blog.csdn.net/baidu_25797177/article/details/72877628
12 layout布局三等分
http://blog.csdn.net/ly_dengle/article/details/70172918
13 解决在eclipse中导入项目名称已存在的问题
http://blog.csdn.net/yjtgod/article/details/9961397
14 android Studio中右侧布局展示的preview 的显示、固定与隐藏
http://blog.csdn.net/superdhq/article/details/53378154
15 使用百度地图AndroidSDK方法
http://lib.csdn.net/article/android/57801?knId=295
报错:
1 230 uid: -1 appid -1 msg: APP Scode码校验失败
当时是由于包名没写对,不需要写到根。
com.learn.p2pmoney.warmlight
2 200错误
项目名称,大小写不对。
16 Android设置布局的阴影背景
有示例
http://blog.csdn.net/ms03001620/article/details/8235625#
背景样式较全
http://blog.csdn.net/zbjdsbj/article/details/51602571
https://www.cnblogs.com/imqsl/p/6561299.html
http://blog.csdn.net/q390345932/article/details/46536655
17 当EditText编辑时 hint 在 手机上显示不出
1 当EditText编辑时 hint 在 手机上显示不出来
就要增加一句话去重新设置颜色值 android:textColorHint = "#707070"
2 通过
android:gravity="top|left"
让hint中内容居于顶部
18 使用Android自带控件DatePickerDialog设置日期
http://blog.csdn.net/sqf251877543/article/details/78617731
http://blog.csdn.net/suwenlai/article/details/71107748
http://blog.csdn.net/wzsdxs/article/details/52074025
http://blog.csdn.net/fumei59/article/details/47080597
需要注意的地方
1 可以自己设置日期框,具体上面的链接中有方法
2 设置时间的选择范围,需要传递long类型的数据,例如当前年份+1年和-1年的代码如下
dayDialog.getDatePicker().setMaxDate(((new Date().getTime()/1000)+60*60*24*365)*1000);
dayDialog.getDatePicker().setMinDate(((new Date().getTime()/1000)-60*60*24*365)*1000);
http://blog.csdn.net/yf198708/article/details/51859481
http://www.jb51.net/article/101771.htm
项目中的代码
final int themeHoloLight = AlertDialog.THEME_HOLO_LIGHT;//选择系统自带的样式
rlDateStarttime.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startTime = new StringBuilder();
Calendar day = Calendar.getInstance();
DatePickerDialog dayDialog = new DatePickerDialog(AddDateActivity.this,themeHoloLight,
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
startTime.append(year + "-" + (month + 1) + "-" + dayOfMonth + " ");
Calendar time = Calendar.getInstance();
Dialog timeDialog = new TimePickerDialog(AddDateActivity.this, themeHoloLight ,new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
startTime.append(hourOfDay+":"+minute);
tvDateShowtime.setVisibility(View.VISIBLE);
tvDateShowtime.setText(startTime);
}
}, time.get(Calendar.HOUR_OF_DAY), time.get(Calendar.MINUTE), true);
timeDialog.show();
}
}, day.get(Calendar.YEAR), day.get(Calendar.MONTH), day.get(Calendar.DAY_OF_MONTH));
//当前年份-1 >= 年份 <= 当前年份+1
dayDialog.getDatePicker().setMaxDate(((new Date().getTime()/1000)+60*60*24*365)*1000);
dayDialog.getDatePicker().setMinDate(((new Date().getTime()/1000)-60*60*24*365)*1000);
dayDialog.show();
}
});
19 Android屏蔽EditTex获得焦点
http://blog.csdn.net/qq_15032453/article/details/52191216
20 进入页面EditText取消焦点防止自动弹出输入框
http://blog.csdn.net/liangxiaoyan7002/article/details/52240761
21 Android修改用户头像
https://www.cnblogs.com/zhangqie/p/6560744.html
http://blog.csdn.net/alanjet/article/details/52494996
22 Android 使用sharedpreferences、ACache缓存用户名和密码
http://blog.csdn.net/qq_27385759/article/details/53319268
23 Android的startActivityForResult()与onActivityResult()与setResult()参数分析,activity带参数的返回
http://www.cnblogs.com/fuck1/p/5456337.html
24 如何用AndroidStudio导入github项目
https://www.cnblogs.com/Sharley/p/5519053.html
25 Android上传图片功能实现(单独写文章)
http://blog.csdn.net/qq_32521313/article/details/52451364
http://blog.csdn.net/u010983881/article/details/50827273
26 关于Sqllite的一些使用方法
cursor.moveToFirst()指向查询结果的第一个位置。一般通过判断cursor.moveToFirst()的值为true或false来确定查询结果是否为空。
cursor.moveToNext()是用来做循环的,一般这样来用:while(cursor.moveToNext()){ }
rs.isAfterLast:游标始终停到1的位置
27 利用intent来传递int数据
方法一:
通过数据类型转换,不过在有些特殊的情况下这种方法并不适用
int id=10;
Intent intent = new Intent(this, EditActivity.class);
intent.putExtra("id", id+""); // id+"" 这样是把int转成String类型, 否则会报错
startActivity(intent);
String sID=getIntent().getStringExtra("id");
int id=Integer.parseInt(sID); //String转int
方法二:
通过bundle这个对象来封装数据进行传递,
例如发送端:
Bundle bundle = new Bundle();
bundle.putInt("id", 3);
intent.putExtras(bundle);
28 android studio无法显示 Android Monitor
http://blog.csdn.net/zxc514257857/article/details/73834327
http://blog.csdn.net/qq_19822039/article/details/51753560
29 设置Textview最大长度,超出显示省略号
http://blog.csdn.net/lonewolf521125/article/details/45481157
30 Android清除本地数据缓存代码
https://www.cnblogs.com/rayray/p/3413673.html
31 注销登陆数据
http://blog.csdn.net/qq_31008549/article/details/54691521
32 实现整个程序退出
https://www.cnblogs.com/zhujiabin/p/5723399.html
http://blog.csdn.net/Sunnyfans/article/details/7688092
http://blog.csdn.net/u013804382/article/details/52788900
33 注销登陆后返回登录界面,按手机返回键仍能返回主界面的问题解决方案