1 二維數(shù)組中的查找。
在一個(gè)二維數(shù)組中唧领,每一行都按照從左到右遞增的順序排序稿存,每一列都按照從上到下遞增的順序排序偎球。請(qǐng)完成一個(gè)函數(shù),輸入這樣的一個(gè)二維數(shù)組和一個(gè)整數(shù)熏迹,判斷數(shù)組中是否含有該整數(shù)檐薯。
1 分析:左->右遞增,上->下遞增注暗。
發(fā)現(xiàn)規(guī)律:
(1)從左下角開(kāi)始查找坛缕,當(dāng)要查找數(shù)字比左下角數(shù)字大時(shí)。右移友存。要查找數(shù)字比左下角數(shù)字小時(shí)祷膳。上移。
(2)右上角開(kāi)始查找屡立,當(dāng)要查找數(shù)字比右上角數(shù)字大時(shí)直晨。下移搀军。要查找數(shù)字比右上角數(shù)字小時(shí)。左移勇皇。
(3)二分法罩句,遍歷所有行,對(duì)每一行使用二分法查找敛摘。
2 編碼:
(1)記錄矩陣特殊點(diǎn)(左下门烂、右上)坐標(biāo),row(array.length-1)兄淫,col(array[0].length-1)屯远。注意二維數(shù)組行列的范圍。
(2)比較大小捕虽,移動(dòng)行列慨丐。
(3)二分法,注意low和high下標(biāo)的變換泄私。左側(cè)high=mid-1房揭,右側(cè)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;
}
/**
* 把每一行看成有序遞增的數(shù)組晌端,利用二分查找捅暴,通過(guò)遍歷每一行得到答案,
* 時(shí)間復(fù)雜度是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 護(hù)眼色的RGB值和顏色代碼
色調(diào):85咧纠;飽和度:123蓬痒;亮度:205,
R: 199; G: 237; B:204;
181 229 181 ??IN WINDOWS
顏色代碼是: #C7EDCC
3 真機(jī)訪問(wèn)Tomcat中的內(nèi)容
地址:本機(jī)IP+端口號(hào)
如果該方法不行惧盹,可以嘗試如下方法:
1 關(guān)閉防火墻乳幸;2 使用Technitium MAC Address Changer修改IP地址
或者使用Genymotion
https://www.cnblogs.com/liu184/articles/5621985.html
4 Android開(kāi)發(fā)規(guī)范
http://keeganlee.me/post/android/20150709
自己制定的規(guī)范
<com.viewpagerindicator.TabPageIndicator
android:id="@+id/tp_my_indicator"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
第一部分:是控件縮寫(xiě)瞪讼,使用第一二個(gè)大寫(xiě)字母組成
第二部分:是控件所屬模塊钧椰,例如my屬于“我的”模塊
第三部分:控件的作用。
系統(tǒng)常用灰色值
#D1D1D1
5 使用開(kāi)源控件ViewPager Indicator時(shí),報(bào)錯(cuò)Android java.lang.IllegalStateException: ViewPager has not been bound 的解決辦法
使用開(kāi)源控件ViewPager Indicator時(shí)符欠,如果標(biāo)題數(shù)據(jù)需要從服務(wù)器獲取嫡霞,然后再設(shè)置Adapter,這個(gè)時(shí)候就會(huì)報(bào)錯(cuò):ViewPager has not been bound 的錯(cuò)誤希柿,其中一種解決辦法是诊沪,先把 TabPageIndicator 設(shè)置為GONE屬性,等加載完數(shù)據(jù)設(shè)置Adapter后曾撤,再將其設(shè)置為VISIBLE端姚。
6 輸入一個(gè)鏈表,從尾到頭打印鏈表每個(gè)節(jié)點(diǎn)的值挤悉。
class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
public class PrintList {
/*
* 輸入一個(gè)鏈表渐裸,從尾到頭打印鏈表每個(gè)節(jié)點(diǎn)的值。
* */
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>();
/**
* 通過(guò)遞歸的方式完成
* @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;
}
/**
* 通過(guò)堆棧的方式
* @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開(kāi)源控件ViewPagerIndicator的使用
下面的鏈接寫(xiě)的很好昏鹃。
http://www.reibang.com/p/a2263ee3e7c3
https://www.cnblogs.com/wangying222/p/5863928.html
http://blog.csdn.net/ithouse/article/details/49026917(標(biāo)題顯示不全)
補(bǔ)充一點(diǎn)就是尚氛,在初始的AndroidMainfest.xml的Activity中要引用主題。還包括清除頭標(biāo)題洞渤。
8 Activity管理Fragment之Fragment關(guān)閉當(dāng)前回到之前Fragment
http://blog.csdn.net/u012382791/article/details/51027507
9 一篇論文完成時(shí)阅嘶,需要問(wèn)自己幾個(gè)問(wèn)題,看是否能回答的出來(lái):
Tips about paper writing and reading
1) 論文的重點(diǎn)是什么载迄?是否已經(jīng)明確表述讯柔?——不要讓讀者去找,要明確的告訴护昧;
2) 關(guān)鍵技術(shù)思想是什么磷杏?表述是否清楚?——同上捏卓;
3) 你提出的問(wèn)題是什么极祸?該問(wèn)題為什么重要?
4) 其他研究者是如何提出同樣或者相似問(wèn)題的怠晴?你的方法有什么不同或者為什么好些遥金?
5) 對(duì)你提出的問(wèn)題,你是如何解決的蒜田?有什么結(jié)果稿械?
批判性的閱讀理解文章,回答如下問(wèn)題:
1) 提出問(wèn)題的動(dòng)機(jī)是什么冲粤?
2) 找出解決方案做出的選擇是什么美莫?
3) 解決方案后面有假設(shè)嗎?是什么梯捕?
4) 假設(shè)是否明智厢呵?是否可以去掉(在不使方法失效的情況下)?
5) 將來(lái)的研究方向是什么傀顾?
6) 什么是確實(shí)完成了或者實(shí)現(xiàn)了襟铭?
7) 方法依賴的理論依據(jù)是什么,是否充分有效短曾?
10 PullToRefreshListView中Item的下標(biāo)從1開(kāi)始
11 Android studio查看SQLIte數(shù)據(jù)庫(kù)文件
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中導(dǎo)入項(xiàng)目名稱已存在的問(wèn)題
http://blog.csdn.net/yjtgod/article/details/9961397
14 android Studio中右側(cè)布局展示的preview 的顯示寒砖、固定與隱藏
http://blog.csdn.net/superdhq/article/details/53378154
15 使用百度地圖AndroidSDK方法
http://lib.csdn.net/article/android/57801?knId=295
報(bào)錯(cuò):
1 230 uid: -1 appid -1 msg: APP Scode碼校驗(yàn)失敗
當(dāng)時(shí)是由于包名沒(méi)寫(xiě)對(duì),不需要寫(xiě)到根嫉拐。
com.learn.p2pmoney.warmlight
2 200錯(cuò)誤
項(xiàng)目名稱哩都,大小寫(xiě)不對(duì)。
16 Android設(shè)置布局的陰影背景
有示例
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 當(dāng)EditText編輯時(shí) hint 在 手機(jī)上顯示不出
1 當(dāng)EditText編輯時(shí) hint 在 手機(jī)上顯示不出來(lái)
就要增加一句話去重新設(shè)置顏色值 android:textColorHint = "#707070"
2 通過(guò)
android:gravity="top|left"
讓hint中內(nèi)容居于頂部
18 使用Android自帶控件DatePickerDialog設(shè)置日期
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 可以自己設(shè)置日期框婉徘,具體上面的鏈接中有方法
2 設(shè)置時(shí)間的選擇范圍漠嵌,需要傳遞long類(lèi)型的數(shù)據(jù)璃赡,例如當(dāng)前年份+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
項(xiàng)目中的代碼
final int themeHoloLight = AlertDialog.THEME_HOLO_LIGHT;//選擇系統(tǒng)自帶的樣式
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));
//當(dāng)前年份-1 >= 年份 <= 當(dāng)前年份+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獲得焦點(diǎn)
http://blog.csdn.net/qq_15032453/article/details/52191216
20 進(jìn)入頁(yè)面EditText取消焦點(diǎn)防止自動(dòng)彈出輸入框
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()參數(shù)分析献雅,activity帶參數(shù)的返回
http://www.cnblogs.com/fuck1/p/5456337.html
24 如何用AndroidStudio導(dǎo)入github項(xiàng)目
https://www.cnblogs.com/Sharley/p/5519053.html
25 Android上傳圖片功能實(shí)現(xiàn)(單獨(dú)寫(xiě)文章)
http://blog.csdn.net/qq_32521313/article/details/52451364
http://blog.csdn.net/u010983881/article/details/50827273
26 關(guān)于Sqllite的一些使用方法
cursor.moveToFirst()指向查詢結(jié)果的第一個(gè)位置碉考。一般通過(guò)判斷cursor.moveToFirst()的值為true或false來(lái)確定查詢結(jié)果是否為空。
cursor.moveToNext()是用來(lái)做循環(huán)的挺身,一般這樣來(lái)用:while(cursor.moveToNext()){ }
rs.isAfterLast:游標(biāo)始終停到1的位置
27 利用intent來(lái)傳遞int數(shù)據(jù)
方法一:
通過(guò)數(shù)據(jù)類(lèi)型轉(zhuǎn)換侯谁,不過(guò)在有些特殊的情況下這種方法并不適用
int id=10;
Intent intent = new Intent(this, EditActivity.class);
intent.putExtra("id", id+""); // id+"" 這樣是把int轉(zhuǎn)成String類(lèi)型, 否則會(huì)報(bào)錯(cuò)
startActivity(intent);
String sID=getIntent().getStringExtra("id");
int id=Integer.parseInt(sID); //String轉(zhuǎn)int
方法二:
通過(guò)bundle這個(gè)對(duì)象來(lái)封裝數(shù)據(jù)進(jìn)行傳遞,
例如發(fā)送端:
Bundle bundle = new Bundle();
bundle.putInt("id", 3);
intent.putExtras(bundle);
28 android studio無(wú)法顯示 Android Monitor
http://blog.csdn.net/zxc514257857/article/details/73834327
http://blog.csdn.net/qq_19822039/article/details/51753560
29 設(shè)置Textview最大長(zhǎng)度章钾,超出顯示省略號(hào)
http://blog.csdn.net/lonewolf521125/article/details/45481157
30 Android清除本地?cái)?shù)據(jù)緩存代碼
https://www.cnblogs.com/rayray/p/3413673.html
31 注銷(xiāo)登陸數(shù)據(jù)
http://blog.csdn.net/qq_31008549/article/details/54691521
32 實(shí)現(xiàn)整個(gè)程序退出
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 注銷(xiāo)登陸后返回登錄界面墙贱,按手機(jī)返回鍵仍能返回主界面的問(wèn)題解決方案